一些文档 1 2假设我必须使用 application:openURL:options:
。我的问题是——因为我已经在使用该方法,并且如何实现的示例代码完全劫持了它:
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
-> Bool {
return GIDSignIn.sharedInstance().handle(url,
sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
annotation: [:])
}
如何确定 openURL 调用是为了登录?
我宁愿实现与 FirebaseUI 中的方法等效的方法 3 :
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String?
if FUIAuth.defaultAuthUI()?.handleOpen(url, sourceApplication: sourceApplication) ?? false {
return true
}
// other URL handling goes here.
return false
}
最佳答案
您可能已经注意到 GIDSignIn.sharedInstance().handle
方法返回一个 bool
,因此您可以这样调用它:
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
-> Bool {
if GIDSignIn.sharedInstance().handle(url, sourceApplication:options[.sourceApplication] as? String, annotation: [:]) {
return true
}
return false
}
如果您的应用支持其他不同类型的登录(facebook、twitter 等),这种方法会更有用
在这种情况下,您所要做的就是为每种 url 添加更多的 if
条件。
希望这有帮助
关于swift - 如何实现 GoogleSignIn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54984780/