【发布时间】:2018-03-06 01:01:44
【问题描述】:
我是 Firebase 的新手。我想在我的应用程序中使用 firebase 读取/写入数据,但是当我尝试这样做时,我收到了这个 DatabaseError: Permission denied 错误。
firebase 上的规则文件
{
"rules": {
"sos":{
".read":"auth != null",
".write":"auth != null"
}
}
}
代码文件
Firebase authFirebaseRef = new Firebase(ApiConstants.FIREBASE_MY_URL);
authFirebaseRef.authWithCustomToken(AppConstants.FBT, authResultHandler);
Firebase.AuthResultHandler authResultHandler = new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
Log.v("onAuthenticated", authData.getUid());
addEvents();
}
@Override
public void onAuthenticationError(FirebaseError firebaseError) {
Log.v("onAuthenticationError= ", "FirebaseError= " + firebaseError.toString());
}
};
private void addEvents() {
mFirebaseDatabase = mFirebaseInstance.getReference("sos").child("emergencyservices");
mFirebaseDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
emergencyServicesList.clear();
for (DataSnapshot dataSnapshotChild : dataSnapshot.getChildren()) {
Log.v("onDataChange", ":" + dataSnapshotChild.child("emergencyServicesName").getValue());
EmergencyServiceModel emergencyServiceModel = new EmergencyServiceModel();
emergencyServiceModel.setEmergencyServiceId(dataSnapshotChild.child("emergencyServicesId").getValue().toString());
emergencyServiceModel.setEmergencyServiceName(dataSnapshotChild.child("emergencyServicesName").getValue().toString());
emergencyServicesList.add(emergencyServiceModel);
}
loadDataToRecyclerView();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.v("DatabaseError", databaseError.getMessage());
}
});
}
之前我通过将.true 保留到read/write 在sos/emergencyservices 中添加了一些记录。但现在我必须通过身份验证来更改它。
【问题讨论】:
-
您是否启用了从控制台登录?
-
@akshay_shahane 是的,我已经做到了
-
更新规则后,您是否已将 googleservices.json 替换为新的?
-
能否给我一个链接,其中提到了这一步?
标签: android firebase firebase-realtime-database firebase-authentication firebase-security