Google表格API v4接收公共Feed的HTTP 401响应

Jon*_*ike 14 google-sheets-api

我在运行针对公众(即"发布到网络"并与"网络上的任何人"共享)电子表格时,从谷歌表格API的v4获得回复是没有运气的.

相关文件说明:

"如果请求不需要授权(例如请求公共数据),那么应用程序必须提供API密钥或OAuth 2.0令牌,或两者兼而有之 - 无论哪种选项对您来说都是最方便的."

并提供API密钥,文档说明:

"拥有API密钥后,您的应用程序可以将查询参数key = yourAPIKey附加到所有请求URL."

因此,我应该能够在以下网址的公共电子表格中找到列出工作表的回复:

https://sheets.googleapis.com/v4/spreadsheets/ {spreadsheetId}?key = {myAPIkey}

(显然,分别在路径和查询字符串中提供的id和密钥)

但是,当我这样做时,我得到一个HTTP 401响应:

{
  error: {
    code: 401,
    message: "The request does not have valid authentication credentials.",
    status: "UNAUTHENTICATED"
  }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以让这个对公共工作簿起作用吗?如果没有,那么从谷歌那边监控这个主题的人是否可以评论或提供工作样本?

noo*_*gui 11

我设法让这个工作.即使我一开始感到沮丧.而且,这不是一个错误.我是这样做的:

  1. 首先,在GDC中启用这些功能以消除身份验证错误.

-Google Apps脚本执行API

-Google Sheets API

注意:请确保您在GDC中使用的Google帐户必须与您在电子表格项目中使用的帐户相同,否则您可能会收到"The API Key and the authentication credential are from different projects"错误消息.

  1. 转到https://developers.google.com/oauthplayground,您将获得授权令牌.
  2. 在第1步中,选择Google表格API v4并选择https://www.googleapis.com/auth/spreadsheets范围,以便拥有机器人读取和写入权限.
  3. 单击"授权API"按钮.允许身份验证,然后您将继续执行第2步.
  4. 在步骤2中,单击"令牌的Exchange授权代码"按钮.之后,继续执行步骤3.
  5. 在第3步,粘贴您的网址请求的时间.由于默认服务器方法是GET继续并单击发送请求按钮.

注意:确保您的网址请求是Spreadsheetv4文档中指明的网址请求.

这是我的示例网址请求:

https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?includeGridData=false
Run Code Online (Sandbox Code Playgroud)

我得到了一个HTTP/1.1 200 OK,它显示了我要求的数据.这适用于所有Spreadsheetv4服务器端进程.

希望这可以帮助.


Sam*_*lin 6

我们最近解决了这个问题,它现在应该可行了.对不起,请再试一次.

该文档必须与"有链接的任何人"或"网上公开"共享.(注意:与"v3 API"不同,"文件 - >发布到Web"中的发布设置无关紧要.)

  • @SamBerlin似乎仍然对我不利 (2认同)