跨平台 Google OAuth 登录:redirect_uri 不匹配

Posted

技术标签:

【中文标题】跨平台 Google OAuth 登录:redirect_uri 不匹配【英文标题】:Cross-platform Google OAuth Signin: redirect_uri mismatch 【发布时间】:2016-02-25 23:12:38 【问题描述】:

我使用 Google OAuth 对我的应用程序上的用户进行身份验证,但遇到了 redirect_uri 支持多个客户端应用程序的问题。

在服务器端,我提供了一个使用 Google php SDK 的 REST API,登录流程与此处描述的几乎相似:https://developers.google.com/identity/sign-in/web/server-side-flow

我有两个客户端应用程序:一个使用 javascript SDK 的网站和一个使用 android 客户端的 Android 应用程序,实现为 https://developers.google.com/identity/sign-in/android/start-integrating

我没有在 Google 控制台中配置 redirect_uri。我的问题是我在服务器代码中将redirect_uri 设置为postmessage,但我无法在Android 应用程序中使用它:我收到redirect_uri mismatch 错误。

$this->client = new Google_Client;
$this->client->setRedirectUri('postmessage');

如果没有这个 uri,我的网络客户端上的 google 登录会引发错误`获取 OAuth2 访问令牌时出错,消息:

invalid_request:缺少参数:redirect_uri

如果我没有指定redirect_uri,登录在Android 上可以正常工作,但网络客户端不工作。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

您需要将重定向 uri 设置如下:

    如果是 web sdk 设置为'postmessage' 如果是移动设备(在您的情况下是 android),请将其设置为 ''(空字符串)

从客户端传递某种标识符,以便您在服务器中知道您应该设置哪个重定向 uri。

【讨论】:

非常感谢您!出于好奇,您知道这是在文档中的何处解释的吗? 太令人沮丧了。但至少它有助于我的理智知道我并没有简单地错过什么。再次,非常感谢你!

以上是关于跨平台 Google OAuth 登录:redirect_uri 不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Google OAuth 登录错误:凭据无效

是否可以使用用户和凭据(JWT)登录,而 Oauth2 可以使用 google 登录?

托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?

托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?

Python Oauth2 - 使用 Google 登录

Python Oauth2 - 使用 Google 登录