如何使用Facebook帐户登录后执行segue?

问题描述:

目前我正在尝试在用户使用Firebase登录Facebook后执行第二个视图控制器的搜索如何使用Facebook帐户登录后执行segue?

我能够让这个工作。我的问题是我必须在Segue激活之前实际登录两次。有什么建议么?

看到我下面

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"))! { 

       } 
      } 
      } 
    } 
     }) 
    } 

CODE看来,你只是调用viewDidAppearperformSegue(withIdentifier:)。如果您希望在登录后发生这种情况,那么您需要将其包含在那里。

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人你是最好的! –