上传图片和 Firebase 显示“用户无权访问此对象”,即使存储设置是公开的
Posted
技术标签:
【中文标题】上传图片和 Firebase 显示“用户无权访问此对象”,即使存储设置是公开的【英文标题】:Uploading an Image and Firebase says "User does not have permission to access this object", even when storage settings are public 【发布时间】:2019-09-14 07:52:31 【问题描述】:我正在尝试上传图像,然后将所述图像的下载位置存储在 val.昨天它可以 100% 完美运行,没有任何问题。我没有更改任何代码,我现在无法上传图片,现在它说
上传图片失败 用户无权访问该对象。
我检查了每个堆栈溢出/Reddit 帖子的相同主题,他们都说要将我的规则的权限更改为公开。
我的规则设置为公开
service firebase.storage
match /b/savephoto-a1cc3.appspot.com/o
match /allPaths=**
allow read, write;
这是上传图片的实现。
val ref = FirebaseStorage.getInstance().getReference("/images/profilePictures/$filename")
//Stores File
ref.putFile(selectedPhoto!!)
.addOnSuccessListener
Log.d("main", "Succesfully Uploaded Image $it.metadata?.path")
//Gets Download Link for Image
ref.downloadUrl.addOnSuccessListener
val downloadImg = it.toString()
Log.d("main", "Profile Picture Location $it")
//Create User
createUser(downloadImg, age, gender, firstName, lastName)
.addOnFailureListener
Log.d("main", "Failed to Upload Image $it.message")
仍然不确定我为什么会得到一个
上传图片失败 用户无权访问该对象。
即使规则设置为公开并且我的代码看起来非常好。 昨天可以正常上传图片,但现在我收到了这个错误。
【问题讨论】:
这是“/b/savephoto-a1cc3.appspot.com/o”你的路径你确定。我想你从这里得到代码 ***.com/questions/38671444/… 。所以你需要从firebase检查你的应用程序ID 【参考方案1】:硬编码存储桶名称不是一个好主意。使用变量占位符代替存储桶名称,参见in the documentation。
存储安全规则必须首先指定服务(在我们的例子中为 firebase.storage)和 Cloud Storage 存储桶(通过匹配 /b/bucket/o) 评估规则。默认规则需要 Firebase 身份验证,但以下是具有不同访问控制的其他常见规则的一些示例。
将您的存储规则更改为以下规则以实现您想要的。
service firebase.storage
match /b/bucket/o
match /allPaths=**
allow read, write;
【讨论】:
以上是关于上传图片和 Firebase 显示“用户无权访问此对象”,即使存储设置是公开的的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试上传图片,但图片未添加到云 Firestore,它已上传到 Firebase 存储但未显示在 React 应用程序中