我在我的应用中使用Facebook SDK。除了一件事,一切都很好: 当用户在webView中点击“完成”按钮时,我得到“致命错误:在解开可选值时意外发现nil”并且应用程序崩溃。任何想法为什么会发生? SCREENSHOT
这里是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 :(得分:0)
您的代码正在做什么 - 因为Facebook登录正在获取数据的过程中,它需要电子邮件处理它,并且电子邮件是可选类型,这就是为什么xcode显示致命错误,因为它无法找到电子邮件需要。
解决方案是你必须像下面的代码一样处理错误
如果错误为零则显示警报或执行您想要的操作
希望它会对你有所帮助。
使用以下代码更新facebook Action
void OnDisable () {
GameMachine.Gameover -= _destroy;
}