iOS Facebook访问令牌不缓存



我有一个用于Facebook登录的自定义按钮,直到最近才正常工作。访问令牌被缓存,下次用户启动应用程序时,继续按钮显示在其位置。

然而,最近标记的行返回nil,无论用户以前是否登录过。我在一个损失,为什么-我没有做任何代码更改在这部分的应用程序?

偶尔登录也会失败,并出现以下错误:

Error Domain=com.facebook.sdk.login Code=308 "(null)"

下面是我的代码:

override func viewDidLoad() {
    super.viewDidLoad()
     if (FBSDKAccessToken.currentAccessToken() == nil){  // <<<< ALWAYS RETURNS NIL
        self.continueButton.hidden = true
    } else {
        self.loginButton.hidden = true
        self.notYouButton.hidden = false
    }
}
@IBAction func loginPressed(sender: AnyObject) {
    let permissions = ["user_about_me","user_relationships","user_birthday","user_location","user_status","user_posts", "user_photos"]
    let login = FBSDKLoginManager()
    login.logInWithReadPermissions(permissions, handler: {
        (FBSDKLoginManagerLoginResult result, NSError error) -> Void in
        if(error == nil){
        self.loginButton.hidden = true
        self.continueButton.hidden = false
        self.notYouButton.hidden = false
        self.notYouButton.enabled = false
        //self.performSelector("showBrowse", withObject: nil, afterDelay: 1.0)
        } else {
            print(error)
        }
    })
}

编辑:在进一步的测试中,似乎调用FBSDKAccessToken.currentAccessToken()如果在viewDidLoad()中调用,则返回nil,但如果我从按钮按下调用它,则按预期返回Facebook令牌。

override func viewDidLoad() {
    super.viewDidLoad()
    if let token = FBSDKAccessToken.currentAccessToken() {
        print (token)
    } else {
        print ("no token")                        <<<<< RETURNS
    }
}
@IBAction func buttonPressed(sender: AnyObject) {
    if let token = FBSDKAccessToken.currentAccessToken() {
        print (token)                             <<<<< RETURNS
    } else {
        print ("no token")
    }
}

我的appDelegate出现了一个问题我在那里设置了一个自定义视图控制器。我将代码还原为使用故事板,问题得到了解决——对于任何有类似问题的人来说,这本身并不是一个解决方案,但对我来说已经足够了。

最新更新