android - Firebase 文件夹的存储权限

标签 android firebase firebase-authentication firebase-storage firebase-security

我正在尝试将音频文件上传到我的 Firebase 存储桶。
存储桶内有一个带有 user_id 的文件夹,它应该将文件上传到此特定文件夹,但问题是只有该用户应该能够访问他自己的文件夹。 我查看了文档并相应地设置了规则,但我似乎遇到了权限问题

{  "error": {    "code": 403,    "message": "Permission denied. Could not perform this operation"  }}

我的规则

service firebase.storage {
match /b/{bucket}/o {
  match /{userId} {
    match /{allPaths=**}{
     allow read, write: if request.auth.uid == userId;
    } 
   }
 }
}

代码 fragment

String userUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
StorageReference storageRef = FirebaseStorage.getInstance().getReference();
final StorageReference audioRef = storageRef.child("/ "+ userUid +"/"+filename());

 //rest of upload task here..

当我将规则设置为公共(public)访问时,上传代码可以完美运行。 有人可以帮我找出我编写的规则有什么问题吗?

最佳答案

您需要为此添加 Firebase 身份验证。之后添加此权限。 请参阅此链接Firebase Security Rules for Cloud Storage Reference

得出的结论是您缺少 Firebase 存储桶名称。

service firebase.storage {
match /b/{Pass your firebase storage bucket name here}/o {
  match /{userId} {
    match /{allPaths=**}{
     allow read, write: if request.auth.uid == userId;
    } 
   }
 }
}

关于android - Firebase 文件夹的存储权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53006028/

相关文章:

android - 如何在插入数据库时​​立即检索插入的值

android - 未知的 'LibraryVariants' 属性 - Gradle 不会同步

ios - Firebase - 闭包内的用户和 currentUser nil

firebase - 无法使用 Firebase Auth 通过 gapi SDK 访问 google API

c# - 使用 Unity 进行 Firebase 电话身份验证

android - 使用 Twilio for app to app VoIP 通话

Android软键盘隐藏RecyclerView

firebase - 如何更改 Firebase-ui 语言?

java - 为什么 php 页面在 LogCat 中不显示相同的内容?

ios - 从一次调用中获取两次 Firebase 数据