Edited at

FirebaseAuth GoogleでSigninする時、毎回アカウント選択の画面を出したい。#Android #firebase

More than 1 year has passed since last update.

Firebase AuthのGoogle認証で初めてサインインする時は、どのGoogleアカウントを使用するか、Googleアカウントを選択できるダイアログが出てくるのですが、1度サインアウトしてもう一度サインインしようとすると、前回サインインをしたGoogleアカウントで自動的にサインインが実行されてしまいます。複数のGoogleアカウントを所持している人にとっては不便です。何よりテストアカウントを選べないのが痛い。


毎回どのアカウントを使うか選択したい!

解決方法はAuth.GoogleSignInApi.signOut()を実行するだけです。


MainActivity.java

//この1行だけだと、次回以降に選択画面が出ない

mFirebaseAuth.signOut();

//Auth.GoogleSignInApi.signOutも呼び完全にサインアウトします
if (mGoogleApiClient.isConnected()){
Auth.GoogleSignInApi.signOut(mGoogleApiClient);
}


GoogleApiClientのインスタンスが必要なので、onCreate()あたりで生成しておくことをオススメします。


MainActivity.java


private GoogleApiClient mGoogleApiClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();

mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

}
})
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
}