java - FirebaseUI-无法识别新用户

标签 java android firebase google-cloud-firestore firebase-authentication

我有一个 Android 应用,使用 Firebase AuthUI 来登录用户。我仅使用电话身份验证。如果新用户登录,我希望他被定向到配置文件创建 Activity ,如果他是老用户,我希望他被定向到主页 Activity 。 但是,当我使用新的测试号码时,我会被定向到主页而不是个人资料 Activity 。我尝试过使用多个号码,它适用于某些号码,但不适用于其他号码(登录成功,但检测为旧用户)。要检查新/旧用户,我使用以下代码:

if (user.getMetadata().getCreationTimestamp() == user.getMetadata().getLastSignInTimestamp()) {
                    //This is a New User
                    //Move to Profile Creation Activity
                    Toast.makeText(this, "new user", Toast.LENGTH_SHORT).show();
                    Log.d(TAG, "onActivityResult: creationTimestamp "+user.getMetadata().getCreationTimestamp());
                    Log.d(TAG, "onActivityResult: lastsignin"+user.getMetadata().getLastSignInTimestamp());
                    Intent loginIntent = new Intent(this, ProfileActivity.class);
                    startActivity(loginIntent);
                    this.finish();
                } else {
                    //This is a returning user
                    Toast.makeText(this, "old", Toast.LENGTH_SHORT).show();
                    Log.d(TAG, "onActivityResult: creationTimestamp "+user.getMetadata().getCreationTimestamp());
                    Log.d(TAG, "onActivityResult: lastsignin "+user.getMetadata().getLastSignInTimestamp());
                    Intent intent = new Intent(this, HomeActivity.class);
                    startActivity(intent);
                    this.finish();


                }

我已手动将测试编号添加到 Firebase 控制台。我还反复删除用手机号码注册的帐户,以便我可以重复使用我的测试号码。我不知道这是否导致了问题。我还尝试记录创建和上次登录时间戳。每当新用户被错误识别为老用户时,创建时间戳和最后登录时间戳相差1。

这是带有时间戳的 logcat:

2020-06-19 21:22:37.553 32080-32080/com.example.XX D/LoginRegisterActivity: onActivityResult: creationTimestamp 1592581957752
2020-06-19 21:22:37.553 32080-32080/com.example.XX D/LoginRegisterActivity: onActivityResult: lastsignin 1592581957753

请提出建议

编辑 1:我观察到一件事,如果我从控制台删除了测试号码以及相应的用户,然后再次在控制台中添加相同的测试号码,我会被识别为老用户。测试号码删除后还会保存吗?因为当我将测试号码更改为完全随机的新号码然后尝试注册时,我被正确识别为新用户

编辑2:刚刚在控制台中添加了一个完全随机的测试号码,现在尝试注册用户。我被带回家而不是进行个人资料 Activity 。这是一个错误吗?在我添加这个数字之前,我的代码工作正常

尝试替代解决方案:我现在按照某人的建议在 firestore 中查询 userID。如果 userID 存在,我会将其视为旧用户并将该用户发送到 Home。我想问一下每个电话号码的userID都是唯一的吗?基本上每个phoneNo对应一个用户?

最佳答案

您不需要做所有这些事情,您只需使用,

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // User is signed in
} else {
    // No user is signed in
}

从下面的链接查看官方文档。

doc

关于java - FirebaseUI-无法识别新用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62474289/

相关文章:

java - Android Studio 2.0 更新 - public static volatile com.android.tools.fd.runtime.IncrementalChange

java - Firebase 中的 getValue() 方法是什么?

java - 在 WebView DialogFragment 中触摸时不显示软键盘

java.lang.ClassCastException : org. hibernate.hql.ast.tree.SqlNode 无法转换为 org.hibernate.hql.ast.tree.FromReferenceNode

java - Eclipse 在一段时间后停止突出显示引用

java - 将某些模式的字符串替换为某些模式

android - 如何更改 Lollipop 中的 DatePicker 日历 View 背景颜色?

ios - 如何通过 GeoFire 正确使用存储的搜索半径?

firebase - 安全的 Firebase 网络钩子(Hook)

java - JAVA 中的 GAE DataStore 查询过滤器与 Query.FilterOperator.EQUAL 无法与数值进行比较