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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Firebase Google用户身份验证更改用户相关的知识,希望对你有一定的参考价值。

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

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

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

答案

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

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

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

另一答案

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

Force google account chooser

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

你有没有能够搞清楚?

另一答案

您应该明确地从Google退出:

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

找到解决方案here

另一答案

在我的下面的代码中,每次提示选择帐户时都会使用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();
                }
            });

}

}

另一答案

使用这种方式注销。

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

                    }

                 });

以上是关于使用Firebase Google用户身份验证更改用户的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Google 用户未在 Firebase 控制台身份验证中显示

将 Google 身份验证令牌与 Firebase 一起使用

Flutter Firebase - 未能正确删除经过 Google 身份验证的用户

检查用户是不是在 Android 的 Firebase Google 身份验证中首次通过身份验证

使用 Firebase 身份验证进行身份验证后检索 Google 访问令牌

使用 Google Play 游戏进行 Firebase 身份验证