如何在 iOS 上使用 Sign In with Google 修复“用户取消了登录流程。”?

Posted

技术标签:

【中文标题】如何在 iOS 上使用 Sign In with Google 修复“用户取消了登录流程。”?【英文标题】:How to fix `The user canceled the sign-in flow.` with Sign In with Google on iOS? 【发布时间】:2019-07-15 08:24:17 【问题描述】:

我正在将 Sign in with Google 与 ios Firebase SDK 集成。当用户点击GIDSignIn 按钮时,应用程序会显示一个显示"MyAPP" want to use Google.com for Sign in 的警报,但警报会很快消失。我在didSignInFor user: GIDGoogleUser方法中得到的错误如下:

2019-02-21 16:54:13.104279+0530 MyApp[18743:185089] [Warning] Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior (<SFAuthenticationViewController: 0x7fa327945800>)
[DEBUG] Google sign-in error: Error Domain=com.google.GIDSignIn Code=-5 "The user canceled the sign-in flow." UserInfo=NSLocalizedDescription=The user canceled the sign-in flow.

我已遵循Authenticate Using Google Sign-In on iOS 文档。

我也试过Google Sign-In crashes on iOS 9 attempting to call canOpenURL的答案,但它不起作用。

AppDelegate 也实现了GIDSignInUIDelegate

如果我从GIDSignInButton to UIButton 更改按钮,它可以工作,但样式会丢失。

【问题讨论】:

【参考方案1】:

如果您尝试在@IBAction 中运行GIDSignIn.sharedInstance()?.signIn()。您可以在登录前运行 GIDSignIn.sharedInstance()?.presentingViewController = self 而不是 insideviewDidLoad()

@IBAction func googleLogin(_ sender: UIButton) 
    GIDSignIn.sharedInstance()?.presentingViewController = self
    GIDSignIn.sharedInstance()?.signIn()

【讨论】:

【参考方案2】:

我之前也遇到过这个问题。 GIDSignInButton 对象在代码中不需要addTarget 或链接@IBActionGIDSignInButton 类已经为我们处理了该操作。

【讨论】:

【参考方案3】:

Appdelegate 尝试使用下面的代码

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool 

    let result = GIDSignIn.sharedInstance().handle(url,
                                                    sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
                                                    annotation: options[UIApplication.OpenURLOptionsKey.annotation])
    return result


【讨论】:

以上是关于如何在 iOS 上使用 Sign In with Google 修复“用户取消了登录流程。”?的主要内容,如果未能解决你的问题,请参考以下文章

关于Sign in with Apple 后台验证的一些记录

如何在 Sign In With Apple 中验证 realUserStatus 值

iOS 第三方登录之苹果登录(sign in with Apple)

iOS实现苹果第三方登录功能 - Sign in with apple

iOS实现苹果第三方登录功能:Sign in with Apple

Android Sign in with apple and firebase flutter