我正在使用以下代码登录 facebook:
@IBAction func fbLoginBtnDidTouch(sender: AnyObject) {
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self) { (result, error) -> Void in
if (error == nil){
let fbloginresult : FBSDKLoginManagerLoginResult = result
if(fbloginresult.grantedPermissions.contains("email"))
{
self.getFBUserData()
}
}
}
}
应用委托(delegate):
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}
这将在 WebView 中启动 FB。如果用户接受来自 FB 帐户的应用程序,它将按预期返回到该应用程序。
但是,如果用户点击 NO 或点击带有 FB 的 webview 中的 Done 按钮,应用程序将崩溃并显示( fatal error :意外发现 nil,而展开可选值)
标记这一行:
if(fbloginresult.grantedPermissions.contains("email"))
那么,如果用户点击“否”或“完成”,为什么应用会崩溃?
最佳答案
首先检查用户是否取消登录。应用程序崩溃,因为没有授予的权限。 FBSDKLoginManagerLoginResult
if (error == nil){
let fbloginresult : FBSDKLoginManagerLoginResult = result
if result.isCancelled {
return
}
if(fbloginresult.grantedPermissions.contains("email"))
{
self.getFBUserData()
}
}
关于ios - 如果用户取消登录,Swift ios facebook 登录会使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36390983/