java - Firebase 单值事件监听器不返回

标签 java android firebase

几个月来,我一直在我的应用程序中成功使用 Firebase。我刚刚完成更新以使用 9.0.0 版本,但还有一个问题我无法解决。

在我的 MainActivity onCreate 函数中,我检查用户是否登录到 Firebase。如果用户已登录,那么我会尝试获取数据库中的用户对象。

这是应用程序中我遇到此问题的唯一实例。我已验证用户已登录,并且 DatabaseReference 指向正确的 url。

创建了 DatabaseReference,并添加了监听器,但是监听器上的任何内容都没有触发...

    FirebaseAuth auth = FirebaseAuth.getInstance();

    if (auth != null && auth.getCurrentUser() != null) {
        DatabaseReference userRef = FirebaseDatabase.getInstance().getReference().child(USERS).child(auth.getCurrentUser().getUid());
        userRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // Logic for success is here...
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

                // Logic for failure is here...
            }
        });
    }

关于我做错了什么的想法?

最佳答案

您的项目配置存在问题,导致 Firebase 身份验证 token 无法正确刷新。您需要在 Firebase 控制台中为您的应用添加 SHA-1 指纹。

转到 Firebase 控制台中项目的概览页面。选择相关应用程序的设置溢出菜单,然后单击“管理”。将有一个用于添加 SHA-1 值的按钮。

您可以按照 this guide 中的步骤为您的应用获取 SHA-1 值.您可能需要重新下载 google-services.json 文件并将其添加到您在 Android Studio 中的应用,但我没有这样做。

这个类似stackoverflow question如果您需要,Firebase 团队成员的回答包含更多详细信息。

关于java - Firebase 单值事件监听器不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37473145/

相关文章:

Java:检查字符串是否以特殊字符结尾或开头

android - 警告框不可见

firebase - 在 FirebaseDatabase.getReference() 中获取 NPE

javascript - Dart:从 Firebase 快照中解码 Json

java - Hadoop执行时出错: Type mismatch in key from map: expected org. apache.hadoop.io.Text,收到org.apache.hadoop.io.LongWritable

java - Primefaces 一页中的两个数据表导致分页和过滤问题

android - 我如何保存我当前的位置?

android - Android监听mysql数据库变化的方法

node.js - 如何使用 Firebase Cloud Functions 检测环境是开发环境还是生产环境?

java - 使字符串的第一个字符小写的最有效方法?