android - 邮箱验证后登录时如何判断用户是否为新用户
问题描述
我正在尝试确定用户是新用户还是现有用户。当用户注册时,需要电子邮件验证。验证成功后,用户可以首次登录。当一个新用户登录时,他必须填写一个必填表格,其中包含他的详细信息,所以这是一个完全不同的活动。
我尝试使用 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]
}
});
解决方案
你也可以
A) 在您的 firebase 数据库中的用户个人资料下方保存一个布尔值,以确定他们是新用户,您可以在他们第一次登录后将其切换为 true。
B) 或者要保存不需要的网络呼叫,您可以在他们的共享首选项中本地存储一个布尔值,以执行相同的操作,并在他们第一次登录后将其设置为 true。
推荐阅读
- bash - 如何删除已放置为 docker 的 bash 命令?
- flutter - 如何“强制”/警告用户在 Dart 中调用对象的 dispose 方法?
- c# - 球体投射仅输出游戏对象的中心
- java - 我无法在调试中读取所有输出文本
- tabular - 表格编辑器 2 - 在 unicode 文件中导出度量
- c++ - 消除最大的重叠球体
- node.js - 我无法用 n 更新节点
- javascript - 在Javascript中将数组元素添加到JSON的元素
- java - 如何查看所有以前的流媒体结果
- android - Mac 上的 Android Studio 无法构建:java.io.FileNotFoundException(不允许操作)