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

时间:2015-11-18 14:37:21

标签: firebase google-oauth firebase-authentication

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

有没有办法强迫"选择一个帐户"出现对话框,以便用户有机会登录其他Google帐户或创建新帐户?

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

5 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分:1)

我试图找出同样的事情。根据一些Google文档,您似乎可以通过"提示强制帐户选择器"命令("无"," select_account"或"同意"):

Force google account chooser

...但似乎没有办法设置"提示"任何Firebase的身份验证方法(特别是(global-set-key (kbd "C-=") 'er/inside-pairs) authWithOAuthRedirect)中的值。

您是否能够弄明白?

答案 2 :(得分:1)

您应该明确地从Google退出:

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

找到解决方案here

答案 3 :(得分:1)

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

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

}

}

答案 4 :(得分:0)

使用这种方式退出。

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

                    }

                 });