【问题标题】:How to write to a sheet with Google Sheets API without oAuth consent screen如何在没有 oAuth 同意屏幕的情况下使用 Google Sheets API 写入工作表
【发布时间】:2021-05-14 17:33:25
【问题描述】:

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

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

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

这将与 Text-to-Speech 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 虚拟机实例中运行

【问题讨论】:

    标签: php oauth-2.0 google-sheets-api gcloud


    【解决方案1】:

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

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

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

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

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

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

    另外,请确保使用

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多