我正在尝试确定用户是新用户还是现有用户。 注册用户后,需要进行电子邮件验证。验证成功后,用户可以首次登录。 新用户登录时,他必须在必填表格中填写自己的详细信息,因此这是完全不同的活动。
我尝试使用getAdditionalUserInfo()。isNewUser(),但它始终返回false。我不确定电子邮件验证是否将其弄乱了
mAuth.signInWithEmailAndPassword(mEmail, mPassword)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
FirebaseUser user = mAuth.getCurrentUser();
updateUI(user);
boolean flag = task.getResult().getAdditionalUserInfo().isNewUser();
if (flag) {
Toast.makeText(EmailPasswordActivity.this, "NEW USER.",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(EmailPasswordActivity.this, "EXISTING USER.",
Toast.LENGTH_SHORT).show();
}
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "signInWithEmail:failure", task.getException());
Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
updateUI(null);
}
// [START_EXCLUDE]
if (!task.isSuccessful()) {
mStatusTextView.setText(R.string.auth_failed);
}
hideProgressDialog();
// [END_EXCLUDE]
}
});
答案 0 :(得分:1)
您可以
A)将一个布尔值保存在firebase数据库中的用户个人资料下,以确定他们是新用户,您可以在首次登录后将其切换为true。
B)或保存不需要的Web呼叫,您可以在他们的共享首选项中本地存储一个布尔值,执行相同的操作,并在他们首次登录后将其设置为true。