35

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

  • 我们正在使用自定义 URI 重定向,但为什么谷歌现在抛出这个错误。自定义 URI 的替代方案是什么?
  • 斯威夫特 2.3 项目
  • 使用 OAuthSwift v0.6.0 cocoapod
  • 这只是在过去一周左右才开始的,所以我相信谷歌的 API 发生了一些变化。

我已经读到谷歌正在弃用 OAuth 的 webviews,并将在 2017 年 4 月 20 日阻止请求。如谷歌开发者博客中所见: https ://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in -native-apps.html

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

在此处输入图像描述

4

12 回答 12

26

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

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

于 2017-02-16T18:51:36.560 回答
14

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

于 2017-02-28T05:05:00.680 回答
3

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

于 2017-03-06T03:31:11.490 回答
3

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

如果我在“GoogleService-Info.Plsit”上的 clientId 和我的“Google Dashboard”不同。在这里检查您的谷歌仪表板:https ://console.developers.google.com/apis/credentials?project=firebase

于 2017-03-10T06:09:59.017 回答
2

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

于 2017-03-05T21:04:25.227 回答
1

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

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

于 2017-03-10T22:03:31.203 回答
1

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

于 2017-03-16T03:49:59.333 回答
1

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

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

  1. 转到 Google Developers 控制台。
  2. 转到凭据部分。
  3. 请注意,“OAuth 2.0 客户端 ID”部分中有两个项目。(如果您之前尝试配置 iOS Google SignIn 项目。
  4. 单击“iOS 客户端”的名称。
  5. 单击“下载 PLIST 文件”。
  6. 从您的项目中删除 Google web Plist 文件。
  7. 放入新的基于 iOS 的 Plist 文件。
  8. 将新的 REVERSED_CLIENT_ID 复制到项目信息页面的 URL 类型中。(这在 Google 的指南中有详细说明)。
  9. 尝试再次运行您的应用程序。

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

于 2017-06-10T14:34:04.427 回答
0

我遇到了同样的错误。然后我发现,我没有提供我的应用程序包 ID 来访问我的应用程序中的 Google 登录服务。您可以从带有链接的页面执行此操作:

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 %20登录

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

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

3.选择你的国家

4.启用谷歌-登录。

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

于 2017-02-25T07:08:53.253 回答
0

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

我的控制台配置中似乎有一些东西,所以我在不同的谷歌控制台应用程序之间切换,并尝试更改捆绑 ID。

唯一能解决此问题的方法是改用 Firebase。我在 firebase 控制台中创建了一个应用程序,下载了新的 plist,它可以工作了。

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

于 2017-02-26T08:41:05.880 回答
0

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

于 2017-04-12T08:43:48.107 回答
0

我将 Meteor 与 Cordova 和 Meteor 的官方 google 集成一起使用,它依赖于cordova-plugin-googleplus.

我不得不:

  • 同时创建 iOS 和 Web 客户端 ID
  • 使用记录在设置/服务器/数据库上的 Web 客户端 ID
  • 但随后将 iOS Web 客户端的反面用作REVERSED_CLIENT_IDforcordova-plugin-googleplus
于 2022-02-09T15:48:11.223 回答