【发布时间】:2017-06-16 01:54:54
【问题描述】:
我正在使用 Firebase 存储来为我的 Android 应用上的用户存储和加载图像。所有用户在使用之前都必须经过身份验证。有时,某些用户个人资料图像未显示并引发“403 Forbidden”错误。这些图像以前显示过,我不确定它们为什么停止工作。 我在我的 firebase 存储上使用以下规则:
service firebase.storage {
match /b/<storage_address>.appspot.com/o {
match /{allPaths=**} {
allow read: if request.auth != null;
allow write: if request.auth != null;
}
}
}
如果我将读取规则更改为allow read;,所有图像都可以正常工作。
这是我的展示方式:
Picasso.Builder builder = new Picasso.Builder(this);
builder.listener(new Picasso.Listener()
{
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception)
{
exception.printStackTrace();
}
});
builder.build().load(URL).into(imgView);
图片 URL 如下所示:
https://firebasestorage.googleapis.com/v0/b/<storage_address>.appspot.com/o/images%2Fprofile%2Fphoto%2F36805?alt=media&token=e62ec151-3aaf-4e5c-aefb-1b3c93828684
这可能与令牌有关吗?
【问题讨论】:
-
您是否使用
StorageReference.getDownloadUrl()将URL 传递给builder.build().load(URL)?如果是这样,我不知道更改安全规则会如何影响行为。通过此 URL 访问文件是公开的,不受规则控制。 -
我怀疑 403 错误不是图像下载的结果,而是其他原因,例如您调用获取下载 URL。发布用于获取 URL 的代码。
标签: android firebase firebase-storage