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

时间:2015-10-01 20:25:24

标签: ios swift facebook-login facebook-sdk-4.0

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

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

  1. 使用FBSDKLoginButton登录Facebook。
  2. 在未来的View和Launches上,检查FBSDKAccessToken.currentAccessToken()是否可以在应用中使用Facebook。
  3. 我发现的是在最近的更新后,如果我再次关闭并启动应用,我的AccessToken现在显示为nil。这是一个主要问题,因为之前我只需要登录一次,然后我的会话就会自动续订。

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

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

    谢谢!

    更新

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

    enter image description here

4 个答案:

答案 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
}

Reference

答案 1 :(得分:4)

升级到FBSDK 4.18.0

时也发生了这种情况

降级到4.17.0解决了它。

答案 2 :(得分:3)

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

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

enter image description here

答案 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
    }