我当前正在使用Firebase身份验证ui登录用户。我要实现的是仅允许那些已经创建了帐户的用户登录。 每当新凭据尝试登录时,我希望Firebase身份验证ui禁用帐户注册。请告诉我如何实现。
这是我登录用户的方式:
if(FirebaseAuth.getInstance().getCurrentUser()==null) {
List<AuthUI.IdpConfig> idpConfigList = Arrays.asList(
//new AuthUI.IdpConfig.EmailBuilder().build(),
new AuthUI.IdpConfig.GoogleBuilder().build(),
new AuthUI.IdpConfig.PhoneBuilder().build()
);
startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder()
.setAvailableProviders(idpConfigList).build(), SIGN_IN_CONST);
}else {
currentUser=FirebaseAuth.getInstance().getCurrentUser();
onSignedIn();
}
谢谢。
答案 0 :(得分:1)
我想要实现的是只允许那些已经创建了帐户的用户登录。
如果要检查用户是否是新用户,这是同一件事。因此,要解决此问题,您只需调用AdditionalUserInfo的接口isNewUser()方法:
返回用户是新用户还是现有用户
因此,请使用以下代码行:
mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
boolean isNewUser = task.getResult().getAdditionalUserInfo().isNewUser();
if (isNewUser) {
Log.d(TAG, "Is New User!"); //Restrict the authentication process
} else {
Log.d(TAG, "Is Old User!"); //Allow user to authenticate
}
}
});