iOS 13 GM上无法使用Google登录

14

我的应用程序有一个“使用Google登录”按钮。当我在iOS 13.0 GM上尝试登录时,GIDSignInDelegate的didSignInForUser:WithError:返回以下错误:

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

我不知道如何解决这个问题。我正在使用Firebase 6.8.1的一部分,其中包括Google登录5.0.0。


"org.openid.appauth.general error -3" 实际上表示流程已被取消:https://github.com/openid/AppAuth-iOS/blob/master/Source/OIDError.h#L103。 然而,此错误未被传递给用户,因此您需要适当地捕获它... - Lukas Würzburger
2
@LukasWürzburger 实际上这就是我在屏幕上看到的:要求用户允许应用程序使用google.com进行登录的警报("App Wants to Use google.com to Sign in")会短暂地显示,然后自动隐藏,接着我就收到了错误代码-3。 - Vladimir Grigorov
这很奇怪。你是想展示另一个视图控制器或类似的东西吗? - Lukas Würzburger
你之前在iOS13之前也使用过GoogleSignIn 5吗?我认为这是GoogleSignIn 5的一个bug。 - Lukas Würzburger
这段代码在iOS 12上运行良好,但我尚未在生产代码中使用5.0.0版本。我还怀疑原因可能在于Google的框架,但如果是这种情况,我希望能看到更多人抱怨。 - Vladimir Grigorov
显示剩余2条评论
6个回答

4
我明白了! AppAuth-iOSGoogleSignInSDK的一个开源依赖项,从1.1.0更新到了1.2.0版本,其中包括iOS 13支持的功能。因此,您需要运行pod update GoogleSignIn来将AppAuth更新到1.2.0版本。由于GoogleSignInSDK本身尚未更新,因此这让我感到困惑。

1
正如我所说,我正在使用Firebase 6.8.1和AppAuth版本为1.2.0。但是它对我来说不起作用。 - Vladimir Grigorov
如果您在8月16日之前使用过GoogleSignIn 5.0.0(Firebase 6.8.1),则Podfile.lock文件可能仍然具有AppAuth 1.1.0版本,直到您运行pod update GoogleSignInpod update Firebase。这样您就可以进行双重检查。此外,Firebase刚刚发布了6.9.0版本。为什么不尝试更新一下呢? - Sean Choe
但是谷歌发布的二进制5.0.0呢?它们似乎也没有包含这些修复。 - Claus Jørgensen
@ClausJørgensen,GoogleSignIn 5.0.0版本中并未包含修复程序,但是它的依赖库之一AppAuth 1.2.0版本中包含了修复程序。 - Sean Choe
是的,我们暂时回滚到之前的版本。等待Google发布新的更新。令人失望的是,Google没有测试iOS 13。 - Claus Jørgensen

3
以下是成功呈现登录视图的解决方案。在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()
}

与其将其放在viewDidiAppear中,你应该在viewDidLoad中使用一些延迟(0.0)秒调用它。 - Himanshu Gupta
我敢打赌,给定的解决方案已经足够了,为什么要增加更多的过程来引起一些延迟呢! - Nafisha Mamti
由于呈现的屏幕上的其他交互,viewDidAppear 可能会被调用多次。 - Himanshu Gupta

2
我下载了Firebase 6.9.0 SDK压缩包并遇到了相同的问题。README显示,捆绑的AppAuth版本为1.2.0。通过更新AppAuth到主版本,我解决了这个问题。
具体来说,我删除了Firebase中包含的AppAuth框架,并使用Carthage构建了AppAuth。

1

供其他用户参考:

Google在GoogleSignIn v5.0.1中修复了此问题。当您将应用程序更新到iOS 13时,您可能还需要更新GoogleSignIn SDK。


0

如果有错请见谅。

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

支持不仅来自13,还来自10。

解决方案是不要让你的pod版本保持最新。

4.4.0。

pod 'GoogleSignIn', '4.4.0'

这个版本还可以。

我预料到了错误。少于

新版本可能会使用由xcode11.3生成的一些代码,所以新版本没问题,旧版本可能会在13处停止处理。


0
如果您正在使用来自Carthage的Firebase 6.9.0,请在任何Firebase条目下面将github "openid/AppAuth-iOS" "master"添加到您的Cartfile中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接