iOS 9 Facebook Access Token在未来的应用程序发布中没有任何价值
在最近的iOS 9更新以及Facebook SDK(4.6.0)的更新之后,我发现我的登录会话不再在应用程序启动之间持续存在。
到目前为止,我的流程非常简单。
- 使用
FBSDKLoginButton
登录Facebook。 - 在未来的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 }