首页 > 解决方案 > PHP 的 Google Cloud Storage 问题

问题描述

我正在使用这个库:google/cloud-storage.

在我的储藏室里,我做了一个桶,叫做:mycustombucket. 我的目标是在该存储桶中上传一个 csv 文件。这是我的代码:

  $storage = new StorageClient([
     'projectId' => 'my project id',
     'keyFile' => json_decode('{
       "web":{
          "client_id":"my client id",
          "project_id":"my project id",
          "auth_uri":"https://accounts.google.com/o/oauth2/auth",
          "token_uri":"https://oauth2.googleapis.com/token",
          "auth_provider_x509_cert_url":"my auth value",
          "client_secret":"my client secret"
       }
      }', true)
  ]);
  $bucket = $storage->bucket('mycustombucket');
  $bucket->upload(
           fopen('path/to/my/file.csv', 'r')
  );

不幸的是,我收到了这个错误信息:json key is missing the type field。我发现了这个类似的POST,但它对我不起作用。我认为它也已经过时了。

JSON的内容,我从这里下载的: 在此处输入图像描述

你能建议我和想法,如何解决这个问题?

谢谢!

标签: phpgoogle-cloud-storage

解决方案


最后,我通过从service account. 从: 在此处输入图像描述

请注意,一旦生成,您将自动下载它。下载按钮将不再可用。因此,请确保您在生成密钥后拥有密钥。我希望有一个下载按钮service account,就像我有的一样OAuth 2.0 Client IDs (见我的帖子)。但我没有:(。最后我的代码:

    $storage = new StorageClient([
        'projectId' => 'projectId' => 'my project id',
        'keyFile' => json_decode('{
              "type": "service_account",
              "project_id": "my project id",
              "private_key_id": "my key id",
              "private_key": "my key",
              "client_email": "email@email.com",
              "client_id": "client id",
              "auth_uri": "https://accounts.google.com/o/oauth2/auth",
              "token_uri": "https://oauth2.googleapis.com/token",
              "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
              "client_x509_cert_url": "url here"
        }', true)
    ]);

推荐阅读