使用 Firebase Google 用户身份验证时,如果用户已经授权应用程序并且仅登录到一个 Google 帐户,则用户会立即登录。
有没有办法强制出现“选择帐户”对话框,以便用户有机会登录到不同的 Google 帐户或创建一个新帐户?
据我所知,货币用户必须从 Google.com 手动注销当前的 Google 帐户(或登录到 > 1)才能显示对话框。
使用 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:
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(status -> {
mFirebaseAuth.signOut();
});
在这里找到了解决方案
在我下面的代码中,谷歌登录按钮每次都会提示选择帐户...
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();
}
});
}
}
我试图弄清楚同样的事情。根据一些 Google 文档,您似乎可以使用“提示”命令(“无”、“选择帐户”或“同意”)强制帐户选择器:
...但是似乎无法在 Firebase 的任何身份验证方法(特别是authWithOAuthRedirect
和authWithOAuthPopup
)中设置“提示”值。
你曾经能够弄清楚吗?
使用这种方式退出。
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(new
ResultCallback<Status>()
{
@Override
public void onResult(@NonNull Status status)
{
mAuth.signOut();
}
});