Google 400 Error: invalid request Custom scheme URIs are not allowed for 'Web' client type

Google 400 Error: invalid request Custom scheme URIs are not allowed for 'Web' client type

当我在 iOS 应用程序中登录 Gmail 时,出现以下错误(屏幕截图)并且没有显示登录字段。我们正在 WKWebView 中加载登录屏幕。

我了解到 google 正在弃用 OAuth 的网络视图,并将在 2017 年 4 月 20 日阻止请求。如 Google 开发者博客中所示: https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html

这是否意味着我已经需要使用或者是否有其他可行的解决方案?我以为我有更多时间需要更新它。

我的猜测是您的客户端在 Google Cloud Console 中注册不正确。 'WEB' 客户端通常是服务器或 Javascript 应用程序。 iOS 应用程序应注册为 iOS 客户端。

https://developers.google.com/identity/protocols/OAuth2InstalledApp#creatingcred

我遇到了同样的错误。然后我发现,我没有提供我的应用程序 Bundle Id 来访问我的应用程序中的 Google 登录服务。 您可以从带有 link:

的页面执行此操作

https://developers.google.com/mobile/add?platform=ios&cntapi=signin&cnturl=https:%2F%2Fdevelopers.google.com%2Fidentity%2Fsign-in%2Fios%2Fsign-in%3Fconfigured%3Dtrue&cntlbl=Continue%20Adding%20Sign-In

1.Sign 使用您的 Google 开发者帐户。

2.Create 您的应用程序名称并从您的项目中复制应用程序包 ID: 项目和目标列表> 常规> 包标识符。

3.Choose你的国家

4.Enable Google- 登录。

然后执行必要的步骤以集成 Google 使用您的 iOS 应用程序登录。

我遇到了同样的问题。我按照所有说明多次集成了我的应用程序,并玩弄代码以查看代码中是否存在任何隐藏的问题。 我在 github https://github.com/googlesamples/google-services 从 google 下载并配置了示例应用程序并遇到了同样的问题,所以它不是代码。

我的控制台配置似乎有问题,所以我在不同的 google 控制台应用程序之间切换,并尝试更改包 ID。

唯一解决这个问题的方法是改用 Firebase。我在 firebase 控制台中创建了一个应用程序,下载了新的 plist,它成功了。

仍然不确定为什么这首先对我不起作用,这似乎不是一个常见问题,但我希望这对某人有所帮助。 干杯,

我也刚发现这个问题
请检查 google 开发者控制台并查看凭据密钥
google-info plist 中的客户端 ID 必须来自 iOS 应用程序,而不是网络。
并将该客户端 ID 用作 revereseClientID 并将其复制到 URI 类型

我刚刚在遵循 Google iOS 登录指南后遇到了这个问题。 plist 生成的文件不是好文件。您需要查看 clientID 和 reversedClientID 并确保它们是 Google 开发人员门户上的 iOS 应用程序的。

我已经通过在 Fire Base 中创建项目解决了问题,因为 REVERSED_CLIENT_ID 生成自 developers.google.com 不正确。 尝试在 FireBase 中创建您的项目 https://console.firebase.google.com

您必须交叉检查 'Google Dashboard' 的 clientId 和 "GoogleProject.Plsit" 的 clientId。如果两者不同,请从 'Google Dashboard' 复制 ClientID 并将其粘贴到 "GoogleService-Info.Plsit"。并根据新粘贴的 ClientID 修改 "GoogleService-Info.Plsit" 中的 reverseClientId(检查如何从 "GoogleService-Info.Plsit" 中的客户端 ID 创建 reverseClientId 的模式)。然后将 thid reverseClientId 粘贴到项目设置的 'URL type' 中。

如果我在 "GoogleService-Info.Plsit" 上的 clientId 与我的 'Google Dashboard' 不同。 在此处检查您的 google 仪表板:https://console.developers.google.com/apis/credentials?project=firebase

我之前使用站点 Google Sign In directs you to 创建了 GoogleService-Info.plist 文件后遇到了这个错误。后来我开始使用 Firebase,它似乎创建了一个单独的 .plist 文件。在尝试包含 Firebase 的新 .plist 文件后,我的 Google 登录按钮开始产生 invalid_request 错误和 Custom scheme URIs are not allowed for WEB client type 消息。

为了解决这个问题,我尝试了很多方法,但最后 删除了我的整个 Firebase 项目 在他们的 Web 控制台(不仅仅是单个应用程序)上,重新创建一个新的从头开始 Firebase 项目,并重新下载新的 .plist 文件,解决了错误。

它创建了两个客户端ID。一个用于网络,一个用于 iOS 应用程序。默认情况下,Web 客户端将位于 google plist 中。所以它给出了上述错误。使用来自 google 控制台的 iOS 客户端 ID 或为 iOS 应用程序创建凭据。

请检查您的项目的 console.developers.google.com/apis/credentials 并查看 OAuth 2.0 客户端 ID 部分中是否已有 client_id,如果是,则复制该客户端 ID 并替换它使用 GoogleService-Info.plist 文件的 CLIENT_ID 并相应地更改 REVERSED_CLIENT_ID (以相反的方式)现在清理并构建您的应用程序并测试它是否可以工作

根据我的经验,我遵循了 Google 的登录 iOS Swift 指南并下载了 Web OAuth JSON 文件。他们确实为 iOS 设置提供了错误的 Plist 文件。

以防万一其他人 运行 遇到这个问题,这里是我遵循的步骤:

  1. 转到 Google 开发人员控制台。
  2. 转到“凭据”部分。
  3. 请注意 "OAuth 2.0 client IDs" 部分中有两项。 (如果您之前尝试配置 iOS Google 登录项目。
  4. 单击 "iOS client for " 的名称。
  5. 点击"Download PLIST File"。
  6. 从您的项目中删除 Google 网络 Plist 文件。
  7. 放入基于 iOS 的新 Plist 文件。
  8. 将新的 REVERSED_CLIENT_ID 复制到项目信息页面的 URL 类型中。 (这在 Google 的指南中有详细说明)。
  9. 再次尝试 运行 您的应用。

注意:我获得了 Google 登录 API 以使用 Swift v3 和 XCode v8。

我正在使用 Meteor 和 Cordova 以及 Meteor 的官方 google 集成,它依赖于 cordova-plugin-googleplus

我不得不:

  • 同时创建 iOS 和网络客户端 ID
  • 按照记录在设置/服务器/数据库上使用 Web 客户端 ID
  • 然后使用 iOS 网络客户端的反向作为 REVERSED_CLIENT_ID 用于 cordova-plugin-googleplus

Expo,来自 expo-google-app-auth

Google.logInAsync 身份验证

在我的例子中,我只是使用 androidClientId 而不是 androidStandaloneAppClientId