使用Firebase Google用户身份验证时,如果用户已经授权该应用程序并且仅登录到一个Google帐户,则会立即登录。
有没有办法强迫"选择一个帐户"出现对话框,以便用户有机会登录其他Google帐户或创建新帐户?
货币据我所知,用户必须从Google.com手动注销当前的Google帐户(或登录> 1)才能显示对话框。
答案 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"或"同意"):
...但似乎没有办法设置"提示"任何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();
}
});