2017-10-27 11 views
0

initial ViewControllerと設定して、Firebase,Google Sign InをiosアプリケーションのAuthViewControllerに統合しました。Google Firebaseのログインが完了した後、AppDelegateからViewControllerに移動

ユーザーがGoogleログインボタンを使用してログインすると、 と同じAuthViewControllerにリダイレクトされます(ログインしているにもかかわらずGoogleログインボタンが表示されます)。

質問:

私は、ユーザーがサインインした後、特定のViewControllerにリダイレクトを設定することができますどのような方法がありますか?そうでない場合、私は機能

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) { 
     if let error = error { 
      // ... 
      return 
     } 

     guard let authentication = user.authentication else { return } 
     let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken, 
                 accessToken: authentication.accessToken) 
     Auth.auth().signIn(with: credential) { (user, error) in 
      if let error = error { 
       // ... 
       return 
      } 
      // User is signed in 
      // ... 
     } 
    } 

の下に使用してAppDelegate年代にプログラム的にそれを行うことができます私はすでにMainViewControllerにセグエために私のAuthViewControllerで定義されたセグエを持っている、しかし、Firebase認証は非同期呼び出しでどのように見えるかを知る必要があり...それが問題を解決しますが、糸のアプローチで しかし最初のショーAuthViewControllerのビューAN:とuserAuthenticated()機能は、我々はEDIT

viewDidAppear機能に

override func viewDidAppear(_ animated: Bool) { 
     print("--------View Did Appear \(userAuthenticated())") 
     if userAuthenticated() { 
      self.performSegue(withIdentifier: "showMain", sender: nil) 
     } 
    } 


    func userAuthenticated() -> Bool { 
     return (Auth.auth().currentUser != nil) ? true : false 
    } 
を呼び出す時点で falseを返します。 Dその後..私は、ユーザーが直接一度に署名 MainViewControllerを後藤たい。

答えて

1

プログラムでAppDelegateからセグエするには、あなたがどうなるか

if let rootVC = window?.rootViewController { 
    rootVC.performSegue(withIdentifier: "segue", sender: self) 
} 
+0

を呼び出すことができます表示するには、その悪いUIの経験... MainViewControllerにseguesこの場合、 'segue'識別子? 'source'コントローラと' destination'コントローラは何を意味しますか? –

+0

あなたのsegue識別子は "showMain"です。あなたが最初のView Controllerとして設定しているので、ルートビューコントローラはあなたの 'AuthViewController'でしょう。宛先は、 "showMain" segueのもう一方の端にある 'MainViewController'です。 – Yarn

+0

あなたの 'AuthViewController'はUINavigationControllerに埋め込まれていますか? – Yarn

関連する問題