首页 文章

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

提问于
浏览
10

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

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

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

5 回答

  • 1

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

    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 )中设置"prompt"值 .

    你有没有能够搞清楚?

  • 0

    您应该明确地从Google退出:

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

    找到解决方案here

  • 13

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

    }

  • 1

    Use this way to signout.

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

相关问题