即使登录,Facebook iOS SDK FBSDKAccessToken.currentAccessToken()也为零?

And*_*w K 7 facebook ios swift

我对FBSDKAccessToken有一些奇怪的行为:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    println(FBSDKAccessToken.currentAccessToken()) //prints nil

    if (FBSDKAccessToken.currentAccessToken() != nil)
    {
        // User is already logged in, do work such as go to next view controller.
        println("this never prints")
        self.generateAPILoginDetails()
    }
    else
    {
        let loginView : FBSDKLoginButton = FBSDKLoginButton()
        self.view.addSubview(loginView)
        loginView.center = self.view.center
        loginView.readPermissions = ["public_profile", "email", "user_friends"]
        loginView.delegate = self
        FBSDKProfile.enableUpdatesOnAccessTokenChange(true)
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "onProfileUpdated:", name:FBSDKProfileDidChangeNotification, object: nil)
    }


}
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取令牌,但它总是为零,即使loginView按钮显示"注销"消息,表明用户确实已登录到Facebook.

And*_*w K 8

我想到了:

你需要添加:

 NSNotificationCenter.defaultCenter().addObserver(self, selector: "onTokenUpdated:", name:FBSDKAccessTokenDidChangeNotification, object: nil)
Run Code Online (Sandbox Code Playgroud)

我有错误的NSNotification名称(FBSDKProfileDidChangeNotification).

然后你使用你的回调处理程序获取令牌并用它做一些事情!

有关详细信息,请参阅此处:http://www.andrewkouri.com/swift-1-2-and-facebooks-new-login-sdk/

  • 回调有效,但在viewDidLoad()中调用时仍然无法解决当前访问令牌为nil的问题.看到正式的FBK文档说要使用它,我仍然很困惑如何让它工作...... (5认同)