HTTP Google表格API v4如何在没有OAuth 2.0的情况下访问?

问题描述 投票:6回答:1

我的想法是创建一个google工作表,将其公开,然后从我的工作计算机linux / bash访问它,以便每天读取/写入值。

我有一个公共谷歌文档表,任何人都可以找到/编辑。这是工作表ID:1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0

通过本书https://developers.google.com/sheets/api/samples/reading做到这一点

curl 'https://sheets.googleapis.com/v4/spreadsheets/1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0/values/Sheet1!A1:A3'

收益:

{
  "error": {
  "code": 403,
  "message": "The request is missing a valid API key.",
  "status": "PERMISSION_DENIED"
  }
}

我已经阅读了很多,特别是在这里qazxsw poi我发现了一个复杂的解决方案。也就是说,如果您想在短短的1小时内访问公共工作表。

浏览到Google Sheet API v4获取v4 api的授权,然后获取“授权代码”,然后获取“刷新令牌”,最后获得“访问令牌”。

使用此“访问令牌”,您可以像这样访问公共表 https://developers.google.com/oauthplayground/

收益:

curl 'https://sheets.googleapis.com/v4/spreadsheets/1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0/values/Sheet1!A1:A3' -H "Authorization: Bearer ya29.GlvaBLjrTdsSuSllr3u2nAiC-BOsjvIOE1x5afU3xiafB-FTOdLWDtfabuIMGF1rId5BsZxiTXxrx7VDEtxww4Q1uvW9zRndkfm3I2LZnT1HK2nTWzX_6oXu-NAG"

完善。理论上,“访问令牌”在一小时后到期,“刷新令牌”永不过期。因此,您将保存令牌,尝试使用“访问令牌”读取表单,如果失败则使用“刷新令牌”获取新的“访问令牌”并继续。

但是,我已经有十几个“刷新令牌”被兑换/过期,“授权码”已过期,几个小时后一切都无效。为什么?

如何在没有这种授权的情况下使用curl访问我的谷歌表格bash?特别是因为我的工作表是公开的,任何人都可以使用浏览器进行编辑。

是否有另一种方法可以通过其他永久授权来完成此操作?为什么不使用电子邮件并通过?

提到“API密钥”但从未解释过。有人可以一步一步解释这个方法吗?

bash http curl google-sheets google-api
1个回答
12
投票

所有Google API都要求您在[Google开发人员console{ "range": "Sheet1!A1:A3", "majorDimension": "ROWS", "values": [ [ "a1" ], [ "a2" ], [ "a3" ] ] } 上创建项目,并标识您自己和您的应用程序,甚至是访问公共数据。由于您已将表格设置为公开,因此您只需转到1并创建公共API密钥,请记住激活Google工作表api。然后只需在您的请求中添加key = [YourKey]作为参数。

更新开发控制台:

创建项目并获取密钥:

google developer console - >创建一个项目 - > Google developer console下拉 - > API密钥

credentials

启用它:

enter image description here - > Google developer console查找表单启用它。

更新:

{“error”:{“code”:403,“message”:“请求缺少有效的API密钥。”,“status”:“PERMISSION_DENIED”}}

意味着您尚未向Google表明自己的身份。在2015年Google Start要求我们确定您自己不能使用Google API而不告诉谷歌您是谁。您可以通过在[Google developer consolelibrary上创建项目来实现此目的。创建API密钥并在所有请求中使用该API密钥。这仅适用于公共数据。

1

注意:对于私人用户数据,您需要使用OAuth并使用access_token =您的令牌或设置标头

授权:持票人ya29.GlvaBLjrTdsSuSllr3u2nAiC-BOsjvIOE1x5afU3xiafB-FTOdLWDtfabuIMGF1rId5BsZxiTXxrx7VDEtxww4Q1uvW9zRndkfm3I2LZnT1HK2nTWzX_6oXu-NAG。

访问令牌与API密钥不同。

© www.soinside.com 2019 - 2024. All rights reserved.