繁体   English   中英

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

[英]How to write to a sheet with Google Sheets API without oAuth consent screen

我正在 PHP 中编写一个脚本,以自动化从数据库中获取数据并将其插入谷歌表格的过程。 由于它将以 15 分钟的间隔运行,并且 Oauth 同意屏幕并不是最好的选择。 是否有另一种选择来获得必要的授权来写入工作表而无需通过浏览器登录?

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

$client = new Google_Client(); 
$service = new Google_Service_Sheets($client);

这将与文本到语音转换 API 我得到这个(自然):

> PHP Fatal error:  Uncaught Google\Service\Exception: {   "error": {
>     "code": 401,
>     "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid
> authentication credential. See
> https://developers.google.com/identity/sign-in/web/devconsole-project.",
>     "errors": [
>       {
>         "message": "Login Required.",
>         "domain": "global",
>         "reason": "required",
>         "location": "Authorization",
>         "locationType": "header"
>       }
>     ],
>     "status": "UNAUTHENTICATED"   } }

错误消息中的链接只是引导您完成同意屏幕。 从我在网上可以找到的内容来看,如果我只读取一个文件不会有问题,但是写入它,即使我将工作表设置为公开,也需要身份验证。

注意:这一切都在 Gcloud VM 实例中运行

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

  1. Go 到 console.cloud.google.com 并使用包含工作表的帐户登录
  2. 添加 Google 表格 API(转到 API 和服务,查找 Google 表格 API,添加它)
  3. Go 返回 API 和服务并单击凭据
  4. 单击创建凭据-> 服务帐户

凭证图片

  1. 填写所需的东西(主要是服务帐户名称,并赋予其所有者角色)并按完成
  2. 单击您刚刚创建的服务帐户
  3. Go 到密钥选项卡 -> 添加密钥 -> 创建新密钥 -> JSON

键选项卡

这应该给你一个使用的钥匙。 这是您的 client_secret.json。 利用

$client->setAuthConfig('./client_secret.json')$client->setAuthConfigFile('./client_secret.json')

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

此外,请确保使用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM