2015-10-15 123 views
0

我有一個自定義按鈕,我用Facebook登錄,它工作正常,直到最近。訪問令牌已被緩存,並且在用戶下次啓動應用程序時,繼續按鈕將顯示在其位置上。iOS 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()是返回nil如果在viewDidLoad()中調用,但如果我從一個按鈕調用它,按下它將按預期返回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") 
    } 
} 

回答

0

事實證明,在我設置自定義視圖控制器的appDelegate中存在問題。我恢復了使用故事板的代碼,問題得到了解決 - 對於有類似問題的任何人來說,這本身並不是一個解決方案,但對我來說這足夠了。