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
を後藤たい。
を呼び出すことができます表示するには、その悪いUIの経験...
MainViewController
にseguesこの場合、 'segue'識別子? 'source'コントローラと' destination'コントローラは何を意味しますか? –あなたのsegue識別子は "showMain"です。あなたが最初のView Controllerとして設定しているので、ルートビューコントローラはあなたの 'AuthViewController'でしょう。宛先は、 "showMain" segueのもう一方の端にある 'MainViewController'です。 – Yarn
あなたの 'AuthViewController'はUINavigationControllerに埋め込まれていますか? – Yarn