gpt4 book ai didi

ios - iOS 中的 Facebook 身份验证错误

转载 作者:行者123 更新时间:2023-11-30 13:40:48 25 4
gpt4 key购买 nike

我在我的应用中使用 Facebook SDK。一切都很好,除了一件事:当用户点击 webView 中的“完成”按钮时,我收到“ fatal error :在展开可选值时意外发现 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")
}
}

最佳答案

您的代码正在做什么 - 由于 facebook 登录正在获取数据的过程中,因此需要电子邮件来处理它,并且由于电子邮件是可选类型,这就是 xcode 显示 fatal error 的原因,因为它无法找到电子邮件需要。
解决方案是您只需像下面的代码一样处理错误如果错误为零,则显示警报或执行您想要的操作

希望对您有帮助。

使用下面的代码更新您的 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()
}
}
})
}

关于ios - iOS 中的 Facebook 身份验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35582480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com