我在屏幕上有两个用于 Google 和 Facebook 的自定义登录按钮。这是我用 AppDelegate
编写的代码,它导致了我将在代码之后解释的问题
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
return true
}
func application(application: UIApplication,
openURL url: NSURL, options: [String: AnyObject]) -> Bool {
if #available(iOS 9.0, *) {
return GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
} else {
// Fallback on earlier versions
}
return true
}
如果我编写此代码,则在单击此处的“确定”按钮后:
屏幕不会关闭并停留在那里。但是如果我们点击“允许”按钮,谷歌屏幕会完美运行。但是如果我只使用这段代码:
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
return true
}
然后删除其他功能,然后 Facebook 的“确定”按钮就可以正常工作了。为什么我添加此功能后 Facebook 不起作用?
func application(application: UIApplication,
openURL url: NSURL, options: [String: AnyObject]) -> Bool {
if #available(iOS 9.0, *) {
return GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
} else {
// Fallback on earlier versions
}
return true
}
最佳答案
这个解决方案适合我
func application(application: UIApplication,
openURL url: NSURL, options: [String: AnyObject]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: nil) ||
GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
annotation: options[UIApplicationOpenURLOptionsAnnotationKey] as? String)
}
关于ios - Facebook 和谷歌使用 Swift 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37836819/