Google 400错误:无效请求“Web”客户端类型不允许使用自定义方案URI

当我在iOS应用中登录Gmail时,我收到以下错误(屏幕截图),并且未显示登录字段。 我们正在WKWebView中加载登录屏幕。

  • 我们正在使用自定义URI重定向,但为什么Google会立即抛出此错误。 自定义URI有哪些替代方案?
  • Swift 2.3项目
  • 使用OAuthSwift v0.6.0 cocoapod
  • 这种情况最近才开始,仅在过去一周左右,我相信Google的API会发生一些变化。

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

这是否意味着我已经需要使用或是否有另一种可行的解决方案? 在我需要更新之前,我想我还有更多时间。

在此处输入图像描述

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

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

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

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

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

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

如果我的客户端ID在“GoogleService-Info.Plsit”上,而我的“Google Dashboard”则不同。 在这里填写你的谷歌仪表板: https ://console.developers.google.com/apis/credentials?project = firebase

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

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

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

我得到了同样的错误。 然后我发现,我没有提供我的应用程序Bundle 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 %20Sign-IN

1.登录您的Google Developer帐户。

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

3.选择你的国家

4.启用Google登录。

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

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

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

设法解决此问题的唯一方法是使用Firebase。 我在firebase控制台中创建了一个应用程序,下载了新的plist,它运行起来了。

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

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

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

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

  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 Sign In API来使用Swift v3和XCode v8。

Interesting Posts