![](/img/trans.png)
[英]Doesn't call Facebook loginButton didCompleteWithResult
[英]Facebook SDK 4.0 - currentAccessToken still nil within loginButton didCompleteWithResult
我正在升级到Facebook SDK 4.X,无法确定登录后立即执行的操作。
在Facebook代表的loginButton didCompleteWithResult
方法中,它成功返回(跳过if语句error
),因此对于我的系统,我需要在服务器上注册用户,因此在Facebook SDK的早期版本中,我会将访问令牌发送到我的服务器。
但是在此didCompleteWithResult
方法中, [FBSDKAccessToken currentAccessToken]
仍返回nil
我所有的AppDelegate生命周期方法都返回了facebook函数,所以我不确定其他可能会发生的错误,或者我应该在哪里填充AccessToken
您可能忘记了didFinishLaunchingWithOptions
方法中的FBSDKApplicationDelegate
调用。
在此处查看答案: https : //stackoverflow.com/a/30406194/561485 。
该文档解释了有关application:didFinishLaunchingWithOptions:方法的更多信息。
就我而言,当我也使用另一个Google登录时,我遇到了这个问题。 因此,该URL不是由facebook sdk处理的。 我必须更改应用程序委托方法,如下所示:
@available(iOS 9.0, *)
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
-> Bool {
let gHandle = GIDSignIn.sharedInstance().handle(url,
sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
annotation: [:])
let fHandle = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, options: options)
return gHandle || fHandle
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.