我将 FBSDK 4.7 添加到我的 swift 应用程序,当它打开 safari View Controller 进行登录时,我尝试点击“完成”而不在电子邮件/密码字段中输入任何内容,应用程序中断。它吐出 “ fatal error :在展开可选值时意外发现 nil”
我该如何处理这个错误?
当前登录密码:
if let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager(){
fbLoginManager.logInWithReadPermissions(["email"],fromViewController:self,
handler:{(result:FBSDKLoginManagerLoginResult!,error:NSError!) -> Void in
if (error == nil){
let fbloginresult : FBSDKLoginManagerLoginResult = result
if(fbloginresult.grantedPermissions.contains("email"))
{
print("Logged in successfully")
self.getFBUserData()
//fbLoginManager.logOut()
}
}
else{
print("HELPPPPPPPPPP")
}
})
}
最佳答案
无需分配变量类型 (result, error)
:
这是使用 Facebook 4.7 SDK 的工作代码 | swift 2 | Xcode 7.
@IBAction func btnFBLoginPressed(sender: AnyObject) {
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web
fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self, handler: { (result, error) -> Void in
if (error == nil){
let fbloginresult : FBSDKLoginManagerLoginResult = result
if fbloginresult.grantedPermissions != nil { //Here we have to check that the set contains value or not
if(fbloginresult.grantedPermissions.contains("email"))
{
self.getFBUserData()
fbLoginManager.logOut()
}
}
}
})
}
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)
}
})
}
}
我们必须检查 grantedPermissions
的 Set
是否为 nil
。
if fbloginresult.grantedPermissions != nil { //Here we have to check that the set contains value or not
关于ios - Facebook SDK 4.7 登录错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33208026/