跨平台 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 不匹配的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用用户和凭据(JWT)登录,而 Oauth2 可以使用 google 登录?
托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?