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();
}