Ios Facebook和Google使用Swift登录
我在屏幕上有两个谷歌和Facebook的自定义登录按钮。下面是我在Ios Facebook和Google使用Swift登录,ios,swift,facebook,google-signin,Ios,Swift,Facebook,Google Signin,我在屏幕上有两个谷歌和Facebook的自定义登录按钮。下面是我在AppDelegate中编写的代码,它会导致问题,我将在代码之后解释 func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { FBSDKApplicationDelegate.sharedInstance().app
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的“OK”按钮就可以正常工作了。当我添加此功能时,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)
}
这个解决方案适合我
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)
}
//请先测试此条件,如果它是用于GIDSignIn标志值的worksput(或)condition int return语句
//请先测试此条件,如果它是GIDSignIn标志值的works put(或)condition int return语句此函数在Swift 3.0中适用于iOS 8.0及以上版本 //对早期版本的回退
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return (FBSDKApplicationDelegate.sharedInstance().application( application,openURL: url,sourceApplication: sourceApplication,annotation: annotation) || GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation))
}
Swift 3.0中的以下功能适用于iOS 8.0及以上版本 //对早期版本的回退
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return (FBSDKApplicationDelegate.sharedInstance().application( application,openURL: url,sourceApplication: sourceApplication,annotation: annotation) || GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation))
}
@EICaptainv2.0我是否可以更新我的问题,因为在应用您的答案后,我仍然无法使用它out@EICaptainv2.0我可以更新我的问题吗?因为在应用了你的答案后,我仍然无法解决它