2016-04-03 12 views
5

をキャンセルした場合、私Facebookでログインするには、次のコードを使用しています:スウィフトIOS 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() 
       } 
      } 
     } 
    } 

AppDelegate:

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アカウントからアプリを受け入れると、期待通りにアプリに戻ります。マーキング

:(予期せずにオプションの値をアンラップしながら、nilを見つけ致命的なエラー)

しかし、ユーザーがNOをクリックするか、アプリが言ってクラッシュしますFBとのWebViewで完了ボタンをクリックした場合

この行:

if(fbloginresult.grantedPermissions.contains("email")) 

なぜ、ユーザーが[いいえ]または[完了]をクリックするとアプリがクラッシュするのですか?

答えて

19

まず、ユーザーがログインをキャンセルしたかどうかを確認します。許可された権限がないため、アプリケーションがクラッシュしました。 FBSDKLoginManagerLoginResult

if (error == nil){ 
    let fbloginresult : FBSDKLoginManagerLoginResult = result 
    if result.isCancelled { 
     return 
    } 
    if(fbloginresult.grantedPermissions.contains("email")) 
    { 
     self.getFBUserData() 
    } 
} 
+0

はいアプリがクラッシュし、私は感謝NOをクリックするか、[完了]ボタン – user2722667

+0

チェック編集した答え – tbilopavlovic

+0

のいずれか、ログインをキャンセル!それはそれでした – user2722667

関連する問題