电子邮件验证后登录时如何确定用户是否是新用户

时间:2019-03-25 14:47:05

标签: android firebase firebase-authentication email-verification

我正在尝试确定用户是新用户还是现有用户。 注册用户后,需要进行电子邮件验证。验证成功后,用户可以首次登录。 新用户登录时,他必须在必填表格中填写自己的详细信息,因此这是完全不同的活动。

我尝试使用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]
    }
});

1 个答案:

答案 0 :(得分:1)

您可以

A)将一个布尔值保存在firebase数据库中的用户个人资料下,以确定他们是新用户,您可以在首次登录后将其切换为true。

B)或保存不需要的Web呼叫,您可以在他们的共享首选项中本地存储一个布尔值,执行相同的操作,并在他们首次登录后将其设置为true。