Php 如何在没有oAuth同意屏幕的情况下使用Google Sheets API写入工作表

Php 如何在没有oAuth同意屏幕的情况下使用Google Sheets API写入工作表,php,oauth-2.0,google-sheets-api,gcloud,Php,Oauth 2.0,Google Sheets Api,Gcloud,我正在用PHP编写一个脚本,以自动化从数据库获取数据并将其插入google工作表的过程。 因为它将以15分钟的间隔运行,Oauth同意屏幕并不是最好的选择。 是否有其他选项可以获得写入工作表所需的授权,而无需通过浏览器登录 我在文档和在线中看到的大多数示例都使用同意屏幕。 如果我尝试这样做: $client = new Google_Client(); $service = new Google_Service_Sheets($client); 这将与文本到语音的API一起工作我(自然地)得

我正在用PHP编写一个脚本,以自动化从数据库获取数据并将其插入google工作表的过程。 因为它将以15分钟的间隔运行,Oauth同意屏幕并不是最好的选择。 是否有其他选项可以获得写入工作表所需的授权,而无需通过浏览器登录

我在文档和在线中看到的大多数示例都使用同意屏幕。 如果我尝试这样做:

$client = new Google_Client(); 
$service = new Google_Service_Sheets($client);
这将与文本到语音的API一起工作我(自然地)得到了这个:

错误消息中的链接只是引导您完成同意屏幕。从我在网上看到的情况来看,如果我只是在读一个文件,就不会有什么问题,但是向它写东西,即使我将表单设置为public,也需要身份验证


注意:这都是在Gcloud虚拟机实例中运行的

您可以使用服务帐户,然后与该服务帐户共享工作表

  • 转到console.cloud.google.com并使用包含工作表的帐户登录
  • 添加GoogleSheetsAPI(转到API和服务,查找GoogleSheetsAPI,添加)
  • 返回API和服务并单击凭据
  • 单击创建凭据->服务帐户
  • 填写所需内容(主要是服务帐户名,并赋予其所有者角色),然后按done
  • 单击您刚刚创建的服务帐户
  • 转到“密钥”选项卡->添加密钥->创建新密钥->JSON
  • 这应该给你一把钥匙。这是您的客户端_secret.json。使用

    $client->setAuthConfig('./client\u secret.json')
    $client->setAuthConfigFile('./client\u secret.json')

    取决于您使用的php google api客户端的版本

    另外,请确保使用

    $client->setScopes([\Google_Service_Sheets::SPREADSHEETS]);
    
  • 与创建的服务帐户共享驱动器中的工作表,并授予其编辑权限
  • $client->setScopes([\Google_Service_Sheets::SPREADSHEETS]);