使用服务帐户密钥和php更新Google表格

时间:2018-12-08 08:52:53

标签: php google-cloud-platform google-sheets-api google-api-php-client

使用php api更新google sheet我已经使用https://console.developers.google.com/apis创建了servide accout密钥,并将该文件保存在我使用composer下载apiclient结构的根文件夹中。并与服务帐户中提供的客户客户电子邮件共享工作表,并授予其完全访问权限。以下是m用于更新的代码:

setReadPermissions("email", "public_profile")

问题是它在我的本地主机上工作正常。但是当我将文件夹上传到000webhost并从那里运行它时,出现以下错误:

  

捕获的异常:无法加载默认凭据。浏览至https://developers.google.com/accounts/docs/application-default-credentials了解更多信息

我是否需要使用 gcloud 。据我所知,我不需要 gcloud 即可使用Google API。而且,如果我需要使用gcloud来使此代码在我的000webhost网站(https://www.000webhost.com)上正常工作。

1 个答案:

答案 0 :(得分:2)

您正在使用凭据文件的相对路径名。您需要使用完整路径。代码行:

$service_account_file = 'credentials.json';

应更改为:

$service_account_file = '/mysecrets/credentials.json';

将目录mysecrets更改为所需的任何名称。如果这是Web服务器,请不要在服务器的html目录中找到该文件。

您还可以手动指定文件:

$client->setAuthConfig($service_account_file);

并删除这些行:

putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $service_account_file); 
$client->useApplicationDefaultCredentials();