我已经在我的应用中成功使用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...
}
});
}
关于我做错了什么的想法?
答案 0 :(得分:4)
项目配置存在问题,导致Firebase身份验证令牌无法正常刷新。您需要在Firebase控制台中为您的应用添加SHA-1指纹。
转到Firebase控制台中项目的概述页面。选择相关应用的设置溢出菜单,然后单击"管理"。将有一个按钮来添加SHA-1值。
您可以按照this guide中的步骤获取应用的SHA-1值。您可能需要重新下载并再次将google-services.json文件添加到Android Studio中的应用中,但我没有。
Firebase团队成员回答的类似stackoverflow question包含更多详细信息(如果需要)。
答案 1 :(得分:0)
如果您未通过任何方法对用户进行身份验证,则需要将规则更改为
{
"rules": {
".read": "auth == null",
".write": "auth == null"
}
}
确保访问数据库不需要身份验证。