这是 Firebase 中规则的定义方式:
我已经成功地使用setValue()在我的注册活动中编写了新用户信息,就像下面这样,并且还使用push().setValue()添加了新评论。每次我都没有认证问题。新用户被直接写入http://DB/users/,而评论被添加得非常深入。
这是一个代码片段,我的代码会打印出“数据无法保存”的日志,每次都是如此。
{
"rules": {
"users": {
".read": true,
"$user_id": {
".write": "auth.uid === $user_id",
".read" : true
}}}}
我已经成功地使用setValue()在我的注册活动中编写了新用户信息,就像下面这样,并且还使用push().setValue()添加了新评论。每次我都没有认证问题。新用户被直接写入http://DB/users/,而评论被添加得非常深入。
这是一个代码片段,我的代码会打印出“数据无法保存”的日志,每次都是如此。
AuthData authData = newRef.getAuth();
if (authData != null) {
Log.v(LOG_TAG, "Auth as " + authData.getUid());
Map<String, Object> newEntry = new HashMap<String, Object>();
newEntry.put("Name", name);
newEntry.put("Description", desc);
newEntry.put("DueDate", date);
newEntry.put("Status", 0);
newRef.setValue(newEntry, new Firebase.CompletionListener() {
@Override
public void onComplete(FirebaseError firebaseError, Firebase firebase) {
if (firebaseError != null) {
Log.v(LOG_TAG, "Data could not be saved. " + firebaseError.getMessage()); //Hits here every time.
} else {
Log.v(LOG_TAG, "Data saved successfully. Finishing activity...");
finish();
}
}
});
;
}
else{
Log.v(LOG_TAG, "No authdata");
}
setValue()
方法时抛出“权限被拒绝”错误:http://stackoverflow.com/questions/19817709/firebase-auto-reconnect-on-android。根据被接受的答案,这个问题在1.0.10版本中已经修复了。 - Willis