2017-07-27 8 views
0

現在、ユーザーがfirebaseを使用してFacebookにログインした後、2番目のView Controllerにセグを実行しようとしていますFacebookアカウントでログインした後にsegueを実行するにはどうすればよいですか?

これを動作させることができました。私の問題は、Segueが起動する前に実際に2回ログインしなければならないことです。助言がありますか?

あなただけviewDidAppearperformSegue(withIdentifier:)を呼んでいるように見える

private var fbLoginSuccess = false //This is gobal 

override func viewDidAppear(_ animated: Bool) { 
if (FBSDKAccessToken.current() != nil && fbLoginSuccess == true) 
{ 

    performSegue(withIdentifier: "Home", sender: self) 

} 
} 

@IBAction func facebookLogin(sender: UIButton) { 

let facebookLogin = FBSDKLoginManager() 

facebookLogin.logIn(withReadPermissions: ["public_profile", "email"],  from: self, handler: { 
    (facebookResult, facebookError) -> Void in 
    if facebookError != nil { 
     print("Facebook login failed. Error \(String(describing: facebookError))") 
    } else if (facebookResult?.isCancelled)! { 
     print("Facebook login was cancelled.") 
    } else { 


     let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString) 

     Auth.auth().signIn(with: credential) { (user, error) in 
      if error != nil { 
       print("Login failed. \(String(describing: error))") 
      } else { 
       fbLoginSuccess = true 
       print("Logged in!") 

       if (facebookResult?.grantedPermissions.contains("email"))! { 

       } 
      } 
      } 
    } 
     }) 
    } 

答えて

0

以下の私のコードを参照してください。サインインした後でセグが発生するようにするには、セグをそこに含める必要があります。

let facebookLogin = FBSDKLoginManager() 

facebookLogin.logIn(withReadPermissions: ["public_profile", "email"], from: self, handler: { 
    (facebookResult, facebookError) -> Void in 
    if facebookError != nil { 
     print("Facebook login failed. Error \(String(describing: facebookError))") 
    } else if (facebookResult?.isCancelled)! { 
     print("Facebook login was cancelled.") 
    } else { 
     let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString) 

     Auth.auth().signIn(with: credential) { (user, error) in 
      if error != nil { 
       print("Login failed. \(String(describing: error))") 
      } else { 
       fbLoginSuccess = true 
       print("Logged in!") 

       if (facebookResult?.grantedPermissions.contains("email"))! { 

       } 
       performSegue(withIdentifier: "Home", sender: self) 
      } 
     } 
    } 
}) 
+0

これは完全に@Jen Personになりました。あなたは最高です! –

関連する問題