几个月来,我一直在我的应用程序中成功使用 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/