2017-02-24 3 views
0

何らかの理由で、私のサインアウト方法を実装した方法は実際にユーザーをサインアウトしていません。これは、Firebaseがサインアウトを完了する前に私のログインストーリーボードに戻っているからです。ここで私が持っているものです。Firebaseからログアウトしてストーリーボードを切り替えます

try! FIRAuth.auth()!.signOut() 
let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let controller = storyboard.instantiateViewController(withIdentifier: "LoginStoryboard") 
self.present(controller, animated: true, completion: nil) 

どのように私は、ログイン・ビュー・コントローラが提示されたときに、ユーザーがサインアウトされていることを確認していますか?

+0

よう

何かは、ユーザが提示され、コントローラの後にサインアウトされている、またはそれらが全く出て署名されていませんか? – swillsea

+0

実際にはユーザーがサインアウトしていますが、サインインボタンを押すとG​​mailアカウントのピッカーには行かず、単にログアウトしたアカウントで自動的にサインインします。 – MarksCode

+1

入手しました。その場合、Googleからユーザーをサインする必要があります。今はFirebaseから署名するだけです。 'GIDSignIn.sharedInstance()。signOut()'を試してみてください。 – swillsea

答えて

1

ここで重要な点は、ユーザーがログアウトしたことを知った後、ログインビューに移動することです。

signOut()関数には完了ハンドラ(hey firebase!add one)がありませんので、別のメソッドを使用して状態の変更を監視する必要があります。

これを行うにはいくつかの方法がありますが、単純な方法は認証状態の変更にリスナー/オブザーバを追加し、状態が変更されたらログインコントローラに進むことです。この

FIRAuth.auth()?.addStateDidChangeListener { auth, user in 
    if let user = user { 
     // user is signed in so don't do anything 
    } else { 
     //the user has now signed out so go to login view controller 
     // and remove this listener 
    } 
} 
関連する問題