首页 > 解决方案 > 邮箱验证后登录时如何判断用户是否为新用户

问题描述

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

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

标签: androidfirebasefirebase-authenticationemail-verification

解决方案


你也可以

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

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


推荐阅读