谷歌在iOS 13上登录失败

谷歌在iOS 13上登录失败,ios,firebase,google-signin,ios13,Ios,Firebase,Google Signin,Ios13,我的应用程序有一个使用谷歌按钮登录的功能。当我尝试在iOS 13.0上登录时,GM GIDSignInDelegate didsigninfo浏览器:WithError:返回此错误: Error Domain=com.google.GIDSignIn Code=-1 "The operation couldn’t be completed. (org.openid.appauth.general error -3.)" 我不知道如何解决这个问题。我正在使用Google Sign-In 5.0.

我的应用程序有一个使用谷歌按钮登录的功能。当我尝试在iOS 13.0上登录时,GM GIDSignInDelegate didsigninfo浏览器:WithError:返回此错误:

Error Domain=com.google.GIDSignIn Code=-1 "The operation couldn’t be completed. (org.openid.appauth.general error -3.)"

我不知道如何解决这个问题。我正在使用Google Sign-In 5.0.0作为Firebase 6.8.1的一部分。

我发现了!
AppAuth iOS
,这是谷歌登录SDK的开源依赖项,已于8月份从1.1.0升级到1.2.0,包括iOS 13支持。因此,您需要运行
pod update googlesign
AppAuth
更新为1.2.0。自5.0.0以来,
GoogleSignIn
SDK本身就没有更新过,这让我感到困惑。

以下是成功获得登录视图的解决方案。在ViewController的视图出现后调用signin方法,它不会以编程方式被取消。我刚刚在IOS 13中实现了它,效果很好

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    GIDSignIn.sharedInstance()?.delegate = self
    GIDSignIn.sharedInstance()?.presentingViewController = self
    GIDSignIn.sharedInstance()?.scopes = [kGTLRAuthScopeDrive]
    GIDSignIn.sharedInstance()?.prepareForInterfaceBuilder()
    GIDSignIn.sharedInstance()?.signIn()
}

如果您使用的是来自迦太基的Firebase 6.9.0,请将github“openid/AppAuth iOS”“master”添加到任何Firebase条目下方的Cartfile中。

我下载了Firebase 6.9.0 SDK zip,遇到了同样的问题。自述文件表明AppAuth的捆绑版本为1.2.0。我可以通过将AppAuth更新为主版本来解决此问题

具体来说,我删除了Firebase附带的AppAuth框架,而是使用迦太基构建AppAuth。

如果错误,请道歉

我以为这个错误会在没有目标的情况下发生

不仅有13人支持,还有10人支持

解决方案,但不要使pod版本保持最新

4.4.0

pod 'GoogleSignIn', '4.4.0'
这个版本没问题

我预料到了错误。少于

新版本可能会使用xcode11.3生成的一些代码,
因此,新的是可以的,现有的一个可能会在13停止处理,以备将来其他用户发现此问题时参考:


谷歌在
GoogleSignIn
v5.0.1中解决了这个问题。将应用程序更新到iOS 13时,您可能还需要更新GoogleSignIn SDK。

“org.openid.appauth.general error-3”实际上意味着流程已取消:但是,此错误不会传递给用户,为了让你能正确地捕捉到它…@LukasWürzburger事实上这就是我在屏幕上看到的:要求用户允许应用程序使用google com(“应用程序想要使用google.com登录”)的警报短暂显示,然后它自己隐藏起来,我得到错误-3。这很奇怪。您正在尝试演示另一个视图控制器或类似的东西吗?不,我只是调用GIDSignIn.sharedInstance().signIn()。如果我在didSignInForUser委托中设置一个断点,我可以通过Google的登录框架看到整个stacktrace,从signIn到AppAuth方法,再返回到委托。在iOS13之前您是否也使用过Google signIn 5?我认为这是Google Signin 5中的一个bug,正如我所说,我使用的是Firebase 6.8.1和AppAuth版本1.2.0。但是,它对我不起作用。如果您在8月16日之前一直在使用
GoogleSignIn 5.0.0(Firebase 6.8.1)
,则
Podfile.lock
文件可能仍然具有
AppAuth
1.1.0,直到您运行
pod update GoogleSignIn
pod update Firebase
。这样你就可以再检查一遍。另外
Firebase
刚刚发布
6.9.0
。你为什么不尝试更新它呢?但是谷歌发布的二进制5.0.0呢?它们似乎也不包含修复程序。@ClausJørgensen GoogleSignIn 5.0.0不包含修复程序-但AppAuth 1.2.0包含修复程序,这是它的依赖项库之一。是的,我们现在回到了以前的版本。等待谷歌发布新的更新。令人失望的是,谷歌没有测试iOS 13。与其把它放在viewDidiAppear中,不如在viewDidLoad中调用它,并有一些延迟(0.0)秒。我打赌给定的解决方案已经足够了,为什么要通过造成一些延迟来添加更多进程呢!在这种情况下,由于屏幕上的其他交互,ViewDidEmbeen可能会多次被调用。