2016-11-20 37 views
0

我已经在测试期间配置了Firebase数据库以便进行PUBLIC访问,并且工作正常。现在我想更改设置,以便只允许应用用户访问。但现在,我从应用程序访问时遇到读/写权限错误。访问数据库的代码中是否需要包含任何更新?针对所有应用用户的Android Firebase访问权限

{ 
    "rules": { 
    ".read": "auth != null", 
    ".write": "auth != null" 
    } 
} 

代码访问DB的片段:

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference(DBReference); 

mDatabase.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
+0

您是否在尝试访问数据库之前检查用户是否已登录? https://firebase.google.com/docs/auth/android/manage-users – Anfuca

回答

1

是的,你必须使用Firebase Authentication来验证用户身份前开始对数据库有任何疑问

中火力的规则改变。如果没有有效的令牌,查询将立即失败并不会自动重试。

实际上,在应用程序启动时使用AuthStateListener是至关重要的。尽早开始,等待它返回当前状态:如果有用户,可以开始使用数据库;如果没有,则需要例如登录屏幕。

+0

我已经找到单独的认证教程。但我在寻找的是如何弥合这两者?即如何将通过身份验证接收到的实例关联到数据库引用?如下面的评论所示,第一个检索数据库实例,第二个检索Auth实例。 – dacscan3669

+0

DatabaseReference mDatabase = FirebaseDatabase.getInstance()。getReference(DBReference); – dacscan3669

+0

FirebaseAuth mAuth = FirebaseAuth.getInstance(); – dacscan3669