php - 错误 403 - 没有 storage.objects.create 访问权限

标签 php firebase google-cloud-storage firebase-storage

我正在尝试使用 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."
}

我还为我的服务帐户赋予了“所有者”角色,但似乎没有修复错误。

My Google Cloud Console

最佳答案

首先,您必须验证使用的配置变量是否与您尝试运行的项目相同。尝试打印环境变量。

console.log(process.env.FIREBASE_CONFIG)

Firebase 默认建立此配置。如果你想改变这个变量,你可以使用。

curl -sL https://firebase.tools | bash

然后继续验证你自己:

firebase login

然后列出可用的项目:

firebase projects:list

查看所有项目别名:

firebase use

然后为了匹配项目配置变量,将您正在使用的别名设置为当前本地环境。

firebase use <alias>

最后,验证配置变量是否是您需要的。

关于php - 错误 403 - 没有 storage.objects.create 访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55440214/

相关文章:

javascript - 是否可以在纯 JS 中访问 SESSION 变量(在 PHP 中设置)?

php - array_diff 没有按预期工作?可能是什么原因?

firebase - 如何在 Firebase 中计算月活跃用户数?我需要 BigQuery 吗?

python - Python 代码中的 Google Cloud Datastore API

google-cloud-storage - Google Cloud DNS CNAME 别名到 Google Cloud Storage

php - 用 PHP 编写的可靠 Markdown 解析器,使用标记化

php - 在 PHP 中按类(instanceof)切换

Firebase 身份验证不适用于 AppEngine 上的 Ktor 应用程序

ios - 检索子节点数据

javascript - 更新到 Node 10-alpine 后 - ERR_STREAM_CANNOT_PIPE