如何在 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
或链接@IBAction
。 GIDSignInButton
类已经为我们处理了该操作。
【讨论】:
【参考方案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