gpt4 book ai didi

java - Android Firebase setValue() 权限被拒绝

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:48:15 25 4
gpt4 key购买 nike

这是在 firebase 上定义规则的方式:

{
"rules": {
"users": {
".read": true,
"$user_id": {
".write": "auth.uid === $user_id",
".read" : true
}}}}

我已经成功地使用 setValue() 在我的注册 Activity 中写入新的用户信息,如下所示,并且还使用 push().setValue() 添加了新评论,每次我都没有遇到身份验证问题。新用户直接写给http://DB/users/而评论加得很深。

这是一个代码 fragment ,我的代码命中日志:无法保存数据。每次。

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");
}

希望我提供了足够的信息,我猜问题出在安全/规则上,但我们将不胜感激。谢谢。

最佳答案

我在这一点上被困住了,这就是对我有帮助的东西。

首先,有两种类型的用户可以从 firebase 访问数据库

  1. 授权
  2. 未经授权

默认情况下,它被设置为未授权,但他们没有任何权限,既不读取也不写入,所以最初如果您尝试执行任何操作,您会得到权限被拒绝错误

如何更改它以满足您的要求?

解决方案:

在数据库部分下,转到规则选项卡。 URL 将类似于您的项目名称。
https://console.firebase.google.com/project/project-name/database/rules

你会在这里看到类似这样的东西:

{
"rules": {
".read": "auth != null", //non-authorised users CANT read
".write": "auth != null" //non-authorised users CANT write
}
}

只需将其更改为

{
"rules": {
".read": "auth == null", //even non-authorised users CAN read
".write": "auth == null" //even non-authorised users CAN write
}
}

根据您的要求更改此项。快乐编码:)

关于java - Android Firebase setValue() 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29901935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com