iOS 9 Facebook Access Token在未来的应用程序发布中没有任何价值

在最近的iOS 9更新以及Facebook SDK(4.6.0)的更新之后,我发现我的登录会话不再在应用程序启动之间持续存在。

到目前为止,我的流程非常简单。

  1. 使用FBSDKLoginButton登录Facebook。
  2. 在未来的View和Launches上检查FBSDKAccessToken.currentAccessToken()以便能够在应用程序中使用Facebook。

我发现的是在最近的更新后,如果我再次关闭并启动应用程序,我的AccessToken现在显示为nil 。 这是一个主要问题,因为以前我只需要登录一次,然后我的会话就会自动更新。

如果我是正确的,登录应该只发生一次,之后应用程序应该能够存储将来连接到Facebook所需的信息,或者只是保留一个刷新自己的令牌。

在iOS9或4.6.0 Facebook SDK更新后,有没有人有任何想法可能导致这种情况? 是否存在需要持久保存的属性,以便将来刷新令牌或者是否应该自动续订令牌? 我接近100%肯定,Facebook SDK的预期体验不是必须在每个应用程序启动时登录(当您重新启动应用程序时,关闭所有方式并再次打开)。

谢谢!

更新

根据回复中的要求,我在Plist文件的TransportSecurity信息中添加了一个附加键。 不幸的是,还没有运气。

在此处输入图像描述

当我更新我的iOS 9时,即使它对我不起作用,但在尝试此解决方案后,它对我有效。

1)在info.plist中添加数据,如图所示

在此处输入图像描述

didFinishLaunchingWithOptions上添加这一行对我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 } 

参考

升级到FBSDK 4.18.0时也发生了这种情况

降级到4.17.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 }