2016-02-23 31 views
0

我在我的應用程序中使用Facebook SDK。除了一件事情,一切都很好: 當用戶在webView中點擊「完成」按鈕時,我得到「致命錯誤:意外地發現零,同時解開一個可選值」和應用程序崩潰。任何想法爲什麼會發生? SCREENSHOTiOS中的Facebook驗證錯誤

這裏的ViewController代碼:

@IBAction func btnFBLoginPressed(sender: AnyObject) { 
    let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager() 
    fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self, handler:{ (result, error) -> Void in 
     if (error == nil) { 
      let fbloginresult : FBSDKLoginManagerLoginResult = result 
      if(fbloginresult.grantedPermissions.contains("email")) 
      { 
       self.getFBUserData() 
       fbLoginManager.logOut() 
      } 
     } else { 
      print("Smthng Wrong") 
     } 
    }) 
} 
func getFBUserData(){ 
    if((FBSDKAccessToken.currentAccessToken()) != nil) { 
     FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in 
      if (error == nil){ 
       print(result) 
      } 
     }) 
    } else { 
     print("Error") 
    } 
} 
+0

代碼你能指出哪條線路,這是開始?可能你正在請求一個對象的屬性,但該對象爲零。你需要檢查/爲什麼該對象是零。 – Roemer

回答

0

什麼,你的代碼是做 - 因爲Facebook登錄是獲取數據的過程中下它需要電子郵件來處理它,如電子郵件是一個可選的類型,這就是爲什麼xcode顯示致命錯誤,因爲它在需要時找不到電子郵件。
解決的辦法是,你只需要處理像下面 代碼中的錯誤,如果錯誤是零顯示警告還是要

希望它會幫助你的東西。

更新你的Facebook的行動與下面

@IBAction func btnFBLoginPressed(sender: AnyObject) { 
    let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager() 
    fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self, handler:{ (result, error) -> Void in 
     if ((error) == nil) { 
      //Show Alert Error Describing any message 
     } 
     else if result.isCancelled { 
      print("result cancel") 
     } 
     else { 
      let fbloginresult : FBSDKLoginManagerLoginResult = result 
      if(fbloginresult.grantedPermissions.contains("email")) 
      { 
       self.getFBUserData() 
       fbLoginManager.logOut() 
      } 
     } 
    }) 
} 
+0

謝謝,它的工作原理! (已經發現問題) –