exports.test = functions.https.onRequest(async (req, res) => {
const file = await admin
.storage()
.bucket("XXX")
.file("YYY");
await file.makePublic();
const url = await file.publicUrl();
});
我目前在云存储上设置了图像。因为我需要通过Google Cloud Node.js客户端库来访问这些代码,所以上面的代码是我当前的设置。不幸的是,在运行此代码时,我得到以下错误:
{
"error": {
"code": 401,
"message": "Anonymous caller does not have storage.objects.getIamPolicy access to the Google Cloud Storage object.",
"errors": [
{
"message": "Anonymous caller does not have storage.objects.getIamPolicy access to the Google Cloud Storage object.",
"domain": "global",
"reason": "required",
"locationType": "header",
"location": "Authorization"
}
]
}
}
如何初始化管理SDK:
const serviceAccount = require("./[my-project-name]-8a2aa8e3eedc.json");
admin.initializeApp({ credential: admin.credential.cert(serviceAccount) });
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o/images {
match /listings/{listingId}/{photo} {
allow read, write: if true;
}
match /users/{userId}/{photo} {
allow read: if true;
allow write: if request.auth.uid == userId;
}
}
}
虽然Firebase Admin SDK不受存储规则的约束,但附加到运行代码的函数的服务帐户仍然需要具有IAM存储权限,但这些是单独的事情。确保函数的服务帐户具有“存储对象管理”IAM角色。
另一方面,在试图重现该问题时,我发现file.publicurl()
方法当前不起作用,因此需要使用getSignedurl
方法,顺便说一句,出于安全考虑,这是推荐的方法。或者(尽管非常不鼓励),您可以自己手工创建uri。
我正在上传。mp3文件通过Firebase存储,但我遇到了权限/规则问题。每次上传时,我都会收到控制台警告 “FIREBASE警告:更新/失败:权限被拒绝” 和 "firebase.js:478未捕获(promise中)错误:PERMISSION_DENIED:拒绝许可" 尽管有这些错误,我还是在Firebase存储中找到了该文件。然而,这些错误使我的代码无法顺利运行。我发现更改Firebase数
我正在为Python使用Firebase Admin SDK。据我所知,在云控制台的IAM部分,admin SDK具有编辑器和存储对象管理角色。有什么方法可以通过Python将上传的对象公之于众? 在docs:Python GCS API中还没有找到其他有用的东西 谢了。 代码示例
我要上传一张图片到firebase的存储器。我用的不是网页版存储(不应该用)。我正在使用firebase admin。没问题,我毫无困难地上传了文件,并在变量“file”中得到结果。 如果我访问firebase存储控制台,图像就在那里。好吧 现在,我有一些问题。 > < li> 为什么对< code>upload ()方法的响应有这么多信息和这么多对象?回顾这个巨大的对象,我在元数据中发现了一个名
问题内容: 我对编码比较陌生,遇到了麻烦。 我有这段代码可以将数据发送到Firebase 但是,我不断收到错误: FIREBASE警告:设置为/ users /(GoogleID)失败:Permission_denied 2016-05-23 22:52:42.707 firebase.js:227未捕获(承诺)错误:PERMISSION_DENIED:权限被拒绝(…) 当我尝试查找时,它谈论的是