HTTP Google Sheets API v4 如何在没有 OAuth 2.0 的情况下访问? [英] HTTP Google Sheets API v4 how to access without OAuth 2.0?

查看:20
本文介绍了HTTP Google Sheets API v4 如何在没有 OAuth 2.0 的情况下访问?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

按照本书

启用它:

Google 开发者控制台 ->图书馆 查找表启用它.

更新:

<块引用>

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

表示您尚未向 Google 表明自己的身份.2015 年,Google 开始要求我们证明自己的身份,您不能只使用 Google API 而不告诉 google 您是谁.为此,您可以在 [Google 开发者控制台1 上创建一个项目.创建一个 API 密钥并在您的所有请求中使用该 API 密钥.这仅适用于公共数据.

<块引用>

https://sheets.googleapis.com/v4/spreadsheets/1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0/values/Sheet1!A1:A3?key=YOurKEY

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

<块引用>

授权:持有人 ya29.GlvaBLjrTdsSuSllr3u2nAiC-BOsjvIOE1x5afU3xiafB-FTOdLWDtfabuIMGF1rId5BsZxiTXxrx7VDEtxww4Q1uvW9zRndkfm1HKI2nTuXpXuX-P

访问令牌与 API 密钥不同.

my idea is to create a google sheet, make it public and then access it from my work computer linux/bash to read/write values on a daily basis.

i have a public google doc sheet that anyone can find/edit. this is the sheet ID: 1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0

doing it by the book https://developers.google.com/sheets/api/samples/reading

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

returns:

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

i've read a lot and especialy here Google Sheet API v4 i've found a complicated solution. that is if you want to access your public sheet in a short 1 hour period.

you browse to https://developers.google.com/oauthplayground/ get authorization for the v4 api, then get "Authorization code", then get "Refresh token", and finally "Access token".

using this "Access token" you can access the public sheet like this
curl 'https://sheets.googleapis.com/v4/spreadsheets/1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0/values/Sheet1!A1:A3' -H "Authorization: Bearer ya29.GlvaBLjrTdsSuSllr3u2nAiC-BOsjvIOE1x5afU3xiafB-FTOdLWDtfabuIMGF1rId5BsZxiTXxrx7VDEtxww4Q1uvW9zRndkfm3I2LZnT1HK2nTWzX_6oXu-NAG"

returns:

{
  "range": "Sheet1!A1:A3",
  "majorDimension": "ROWS",
  "values": [
        [
      "a1"
    ],
    [
      "a2"
    ],
    [
      "a3"
    ]
  ]
}

perfect. in theory the "Access token" expires after an hour, the "Refresh token" never expires. so you would save the tokens, try to read the sheet with the "Access token", if it fails use the "Refresh token" to gain a new "Access token" and carry on.

but, i've had a dozen of "Refresh token"s that were redeemed/expired, "Authorization code"s expired, all in all nothing works after a few hours. why?

how can i access my google sheet form bash with curl without this kind of authorization? especially since my sheet is public and can be edited by anyone with a browser.

is there another way to do this with some other permanent authorization? why not use email and pass?

"API key" is mentioned but never explained. can some one please explain this method step by step?

解决方案

All Google APIs require that you create a project on Google developer console and identify yourself and your application, even to access public data. Since you have set the sheet to public you can just go to google developer console and create a public api key remember to active the google sheets api. Then just add key=[YourKey] as a parameter on your request.

Update Dev console:

Create project and get key:

Google developer console -> create a project -> credentials drop down -> API Key

Enable it:

Google developer console -> library find sheets enable it.

Update:

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

Means that you have not identified yourself to Google. In 2015 Google Start to require that we identify ourselves you cant just use a Google API without telling google who you are. You do that by creating a project on [Google developer console1. Create an API key and use that API key in all of your requests. This only works with Public data.

https://sheets.googleapis.com/v4/spreadsheets/1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0/values/Sheet1!A1:A3?key=YOurKEY

Note: With private user data you would need to use OAuth and use either access_token=your token or set the header

Authorization: Bearer ya29.GlvaBLjrTdsSuSllr3u2nAiC-BOsjvIOE1x5afU3xiafB-FTOdLWDtfabuIMGF1rId5BsZxiTXxrx7VDEtxww4Q1uvW9zRndkfm3I2LZnT1HK2nTWzX_6oXu-NAG.

An access token is not the same as a API Key.

这篇关于HTTP Google Sheets API v4 如何在没有 OAuth 2.0 的情况下访问?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆