2017-07-27 102 views
0

目前我正在嘗試在用戶使用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"))! { 

       } 
      } 
      } 
    } 
     }) 
    } 

回答

0

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

相關問題