php - 跨平台谷歌 OAuth 登录 : redirect_uri mismatch

标签 php android oauth google-oauth google-signin

我使用 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 设置如下:

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

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

关于php - 跨平台谷歌 OAuth 登录 : redirect_uri mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33877951/

相关文章:

java - 如何在 Java 中更改电话的来电屏幕?

android - Android SwitchCompat 的垂直对齐方式?

python - 如何在 Python Flask 中访问 # 之后的 URL 段?

python - TikTok oAuth API 授权码请求始终过期

php - 为什么在 mysql_real_escape_string 中有资源?

javascript - 使用 JQuery、Ajax、PHP 和 MySQL 的多个文本框字段

php - Varnish 503 错误不会消失并且是随机的

java - 扩展 Android 按钮类

php - 为什么 Twitter 返回 "Failed to validate oauth signature and token?"

php - 通过 user1_id 和 newmsg 发送表单,无需刷新页面