使用Firebase Google用户身份验证更改用户

问题描述 投票:10回答:5

使用Firebase Google用户身份验证时,如果用户已经授权应用程序并且仅登录到一个Google帐户,则会立即登录。

有没有办法强制显示“选择帐户”对话框,以便用户有机会登录其他Google帐户或创建新帐户?

货币据我所知,用户必须从Google.com手动注销当前的Google帐户(或登录> 1)才能显示对话框。

firebase google-oauth firebase-authentication
5个回答
14
投票

您可以强制选择具有“提示”提供程序参数的帐户。

var googleAuthProvider = new firebase.auth.GoogleAuthProvider();
googleAuthProvider.setCustomParameters({
   prompt: 'select_account'
});
firebase.auth().signInWithRedirect(googleAuthProvider)

使用Firebase JavaScript SDK v4.1.2进行测试


1
投票

我想弄清楚同样的事情。根据一些Google文档,您似乎可以使用“提示”命令(“无”,“select_account”或“同意”)强制帐户选择器:

Force google account chooser

...但是似乎没有办法在Firebase的任何认证方法(特别是authWithOAuthRedirectauthWithOAuthPopup)中设置“提示”值。

你有没有能够搞清楚?


1
投票

您应该明确地从Google退出:

Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(status -> {
    mFirebaseAuth.signOut();
});

找到解决方案here


1
投票

在我的下面的代码中,每次提示选择帐户时都会使用Google登录按钮...

public class MainActivity extends AppCompatActivity {

Button btn_signOut;
private GoogleSignInClient mGoogleSignInClient;


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

    btn_signOut = findViewById(R.id.btnSignOut);

    btn_signOut.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            signOut();
        }
    });

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
}

private void signOut() {
    mGoogleSignInClient.signOut()
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    finish();
                }
            });

}

}


0
投票

使用这种方式注销。

 Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(new
 ResultCallback<Status>()
                 {
                     @Override
                    public void onResult(@NonNull Status status)
                     {
                         mAuth.signOut();

                    }

                 });
© www.soinside.com 2019 - 2024. All rights reserved.