2017-11-16 17 views
0
私はGoogleのアカウントで認証を追加firebaseドキュメント続き

、これは私が私のアプリデリゲートFirebase Googleの認証(SWIFT)

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) { 

     if let error = error { 
      print("Failed to log into Google: ", error) 
      return 
     } 
      print("Successfully logged into Google", user) 
     guard let idToken = user.authentication.idToken else { return } 
     guard let accessToken = user.authentication.accessToken else { return } 
     let credentials = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken) 

     Auth.auth().signIn(with: credentials, completion: { (user, error) in 
      if let err = error { 
       print("Failed to create a Firebase User with Google account: ", err) 
       return 
      } 

      guard let uid = user?.uid else { return } 

      print("Successfully logged into Firebase with Google", uid) 

     }) 
    } 


    func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!) { 
     // Perform any operations when the user disconnects from app here. 
     // ... 
    } 

が、Googleのボタンを持っているコードの一部です

fileprivate func setupGoogleButtons() { 


     googleButton.frame = CGRect(x: 189, y: 532, width: 118, height: 41) 
     view.addSubview(googleButton) 

     GIDSignIn.sharedInstance().uiDelegate = self 
} 

は明らかにviewControllerにありますが、ログイン後の瞬間にユーザーが常に同じVCを見つけるため、ユーザーが自分のGoogleアカウントでログインすると自動的にself.performSegue(withIdentifier: "goToHome1", sender: self)が自動的に表示されます。これどうやってするの?

UPDATEは

私はそれhereを確認し、この質問Google and Facebook Firebase Auth using swift 3

+0

あなたの達成しようとしていることと既に試したことを明確にするために質問を更新してください。この部分は私には分かりません。「私がしたいのは自動的に... performSegue ...ログイン後の瞬間に、ユーザーは常に同じVCを見つける」そこに機能的で技術的なビットがあります。 – PDK

答えて

0

認証クラスが機能addAuthStateDidChangeListener:を持って、次の私の問題を解決します。

ユーザが変更すると、特にユーザがログインしたときにいつでもトリガされます。コールバックは、非ゼロのユーザを返します。それはあなたがセグを実行したい時です。

0

エラーがなければ、ユーザーは正常にサインインしました。そのため、セグをすべきです。ボタン自体はサインイン機能を呼び出すだけです。サインインが失敗するか、成功するかによって、アラートやセグが発生します。

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) { 
    if let error = error { 
     print("Failed to log into Google: ", error) 
     return 
    } 

    print("Successfully logged into Google", user) 
    guard let idToken = user.authentication.idToken else { return } 
    guard let accessToken = user.authentication.accessToken else { return } 
    let credentials = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken) 

    Auth.auth().signIn(with: credentials, completion: { (user, error) in 
     if let err = error { 
      print("Failed to create a Firebase User with Google account: ", err) 
      return 
     } 

     guard let uid = user?.uid else { return } 
     print("Successfully logged into Firebase with Google", uid) 
     // segue here 
     DispatchQueue.main.async { 
      self.performSegue(withIdentifier: "goToHome1", sender: self) 
     } 
    }) 
}