php - 错误 403 - 没有 storage.objects.create 访问权限
问题描述
我正在尝试使用 Laravel (PHP) 将图像上传到我的 Firebase 存储。
public function uploadObject($bucketName, $objectName, $source) {
$projectId = 'cloudestate-d10da';
$storage = new StorageClient([
'projectId' => $projectId,
'keyFilePath' => __DIR__.'/StorageAcc.json'
]);
$file = fopen($source, 'r');
$bucket = $storage->bucket("images");
$object = $bucket->upload($file, [
'name' => $objectName
]);
printf('Uploaded %s to gs://%s/%s' . PHP_EOL, basename($source), $bucketName, $objectName);
}
但是当我尝试运行它时,我收到以下错误:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "forbidden",
"message": "storageacc@cloudestate-d10da.iam.gserviceaccount.com does not have storage.objects.create access to images/testezc.png."
}
],
"code": 403,
"message": "storageacc@cloudestate-d10da.iam.gserviceaccount.com does not have storage.objects.create access to images/testezc.png."
}
}
我还给了我的服务帐户“所有者”角色,但似乎没有修复错误。
解决方案
首先,您必须验证使用的配置变量是否与您尝试运行的项目相同。尝试打印环境变量。
console.log(process.env.FIREBASE_CONFIG)
Firebase 默认建立此配置。如果你想改变这个变量,你可以使用。
curl -sL https://firebase.tools | bash
然后继续验证自己:
firebase login
然后列出可用的项目:
firebase projects:list
查看所有项目别名:
firebase use
然后为了匹配项目配置变量,将您正在使用的别名设置为当前本地环境。
firebase use <alias>
最后,验证配置变量是否是您需要的。
推荐阅读
- if-statement - 谷歌表格:如果选中复选框,则计算彩色单元格的数量
- machine-learning - 将 Ray RLlib 与自定义模拟器一起使用
- r - 未从我的 R 包中导出/可用的数据集
- r - Azure 上容器中的管道工如何映射端口
- .net - 使用 SeriLog 和 PowerShell 的 Hello World
- python - 用 Beautiful Soup 提取表中的所有链接
- javascript - JavaScript 布尔函数允许多次返回
- selection-sort - 为什么我的输出在选择排序中以错误的顺序打印?
- r - 为什么 rev(factor) 不能作为反转 dplyr::top_n() 的 wt 参数的一种方式?
- python - 如何从每个条目的 JSON 文件中提取数据?