在最近的iOS 9更新以及Facebook SDK(4.6.0)的更新之后,我发现我的登录会话不再在应用程序启动之间持续存在。
到目前为止,我的流程非常简单。
FBSDKLoginButton
登录Facebook。FBSDKAccessToken.currentAccessToken()
是否可以在应用中使用Facebook。我发现的是在最近的更新后,如果我再次关闭并启动应用,我的AccessToken现在显示为nil
。这是一个主要问题,因为之前我只需要登录一次,然后我的会话就会自动续订。
如果我是正确的,登录应该只发生一次,之后应用程序应该能够存储将来连接到Facebook所需的信息,或者只是保留一个刷新自己的令牌。
在iOS9或4.6.0 Facebook SDK更新后,有没有人有任何想法可能导致这种情况?是否存在需要持久保存的属性,以便将来刷新令牌或者是否应该自动续订令牌?我接近100%肯定,Facebook SDK的预期体验不是必须在每个应用程序启动时登录(当您重新启动应用程序时,一直关闭并再次打开)。
谢谢!
更新
根据回复中的要求,我在Plist文件的TransportSecurity信息中添加了一个额外的密钥。不幸的是,还没有运气。
答案 0 :(得分:13)
在didFinishLaunchingWithOptions
上添加此行对我有用:
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
最终方法看起来像这样:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
if let accessToken = FBSDKAccessToken.currentAccessToken(){
print(accessToken)
}else{
print("Not logged In.")
}
return true
}
答案 1 :(得分:4)
升级到FBSDK 4.18.0
时也发生了这种情况降级到4.17.0解决了它。
答案 2 :(得分:3)
答案 3 :(得分:0)
对于iOS 11 / Swift 4,您应该将以下代码添加到AppDelegate:didFinishLaunchingWithOptions
SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
最终代码是:
import FacebookCore
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.\
// FACEBOOK CONFIGURATION
SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}