ios - 如果用户取消登录,Swift ios facebook 登录会使应用程序崩溃

标签 ios swift facebook

我正在使用以下代码登录 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/

相关文章:

ios - Swift - 占位符长文本 - 切中间

iphone - 检测何时选择 UITabBarController 更多选项卡

iphone - UILabel 属性转储

ios - FBSDKShareDialogModeNative 在分享点击时调用 sharerDidCancel

jquery - 如何关闭点击外部的 div(模态)。 Pinterest 和 Facebook 方式

jquery - 设置-webkit-overflow-scrolling : touch using jQuery

ios - 使用_框架!仅适用于某些 pod 或 swift pod

ios - 第二个 View 中的侧面菜单不起作用

swift - 如何将 CString 传递给 CVarArg?

objective-c - 用于在墙上张贴的自定义控件(如在 Facebook 应用程序中)