我在API Manager中生成了一个服务器密钥,并试图在我的Mac上执行以下操作:
curl 'https://sheets.googleapis.com/v4/spreadsheets/MySheetID?ranges=A1:B5&key=TheServerKeyIGeneratedInAPIManager'
Run Code Online (Sandbox Code Playgroud)
但这就是它的回报:
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
我在运行针对公众(即"发布到网络"并与"网络上的任何人"共享)电子表格时,从谷歌表格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)
任何人都可以让这个对公共工作簿起作用吗?如果没有,那么从谷歌那边监控这个主题的人是否可以评论或提供工作样本?
我在脚本编辑器中创建了一个脚本,将其发布为"Deploy as API executable".在这个脚本中,我向我的工作表提供了一个doc_id,并定义了一个从该工作表中获取数据的函数.
然后我转到https://developers.google.com/apps-script/execution/rest/v1/scripts/run来测试执行API.我添加了范围,授权应用程序并尝试了它.我收到以下错误消息:
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
Run Code Online (Sandbox Code Playgroud)
有人能告诉我我做错了什么吗?