我使用 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不匹配
错误。
$this->client = new Google_Client;
$this->client->setRedirectUri('postmessage');
如果没有此 uri,我的网络客户端上的谷歌登录会抛出错误“获取 OAuth2 访问 token 时出错,消息:
invalid_request: Missing parameter: redirect_uri
如果我不指定 redirect_uri,登录在 Android 上工作正常,但网络客户端不工作。我该如何解决这个问题?
最佳答案
您需要将重定向 uri 设置如下:
- 如果是 web sdk 将其设置为
'postmessage'
- 如果它是移动设备(在您的情况下是 android),请将其设置为
''
(空字符串)
从客户端传递某种标识符,以便您在服务器中知道应该设置哪个重定向 uri。
关于php - 跨平台谷歌 OAuth 登录 : redirect_uri mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33877951/