我正在从事聊天机器人项目。我希望用户能够在Google表格上输入列表项。聊天机器人在DialogFlow上,我创建了意图,然后打开了Webhook。我现在正在使用Google Cloud Functions,并创建了一个函数来 POST 在Google工作表中添加新项目。我已经能够成功读取(获取)工作表中要显示给聊天机器人中用户的项目列表。
我是Nodejs的新手,并且对Oauth并不了解,但是我将表单设置为可以被互联网上的任何人编辑,并且我还具有有效的API密钥。为了尝试入门,我继续https://apitester.com测试那里的HTTP请求。 我可以轻松获得响应,该响应返回我已经拥有的项目列表。但是,尽管该站点确实表明请求“通过”,但我的POST响应仍然返回问题。
我的POST请求
https://sheets.google.com/v4/spreadsheet/<SPREADSHEETID>/values/A1:append?includeValuesInResponse=true&key=<MY_API_KEY>
其中<SPREADSHEETID>
和<MY_API_KEY>
与我的凭据匹配。
我的请求正文:
{
"values": [ ["Hello", "World"] ],
"range": "Sheet1!A1:B1",
"majorDimension": "ROWS"
}
响应:
HTTP/1.1 301 Moved Permanently
Location: https://docs.google.com/spreadsheets?usp=direct_url
Content-Type: text/html; charset=UTF-8
X-Content-Type-Options: nosniff
Date: Thu, 18 Oct 2018 07:31:14 GMT
Expires: Sat, 17 Nov 2018 07:31:14 GMT
Cache-Control: public, max-age=2592000
Server: sffe
Content-Length: 248
X-XSS-Protection: 1; mode=block
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"
我查看了 301错误代码,发现这是一条重定向消息,表示服务器端错误。我读到它应该是自修复的,因为您的请求将被重定向到上面Location
值中的相应站点。但是我也复制了Location
链接,发现它只是将我带到我的个人Google云端硬盘。我在其他地方读到,可能会发生这种情况,因为Google正在通过安全链接进行通信。我检查了我的Google工作表,以防万一,但没有任何变化。
无论如何,在将附加请求编码到我的Google Cloud Function中之前,是否可以对其进行测试?如果是这样,我可以在哪里进行测试以及如何确保请求能够通过(希望只有一个API密钥而没有Oauth凭据)?
我尝试在文档页面(https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append)上执行此操作(右侧为“ Try This API”),但我却得到了一个永无止境的红色进度圆圈。
请帮助!如果唯一的答案是Oauth,请帮我过去指导我访问Oauth文档,因为我发现这没有什么帮助。
谢谢!
编辑1 好吧,我一直在尝试一些事情。 Oauth Playground不适用于我,但是该网站(https://developers.google.com/apis-explorer/#p/sheets/v4/sheets.spreadsheets.values.append)允许我在电子表格中发布新行。 (我必须将“授权OAuth 2.0”切换为“开”。)
现在我可以使用Oauth了,如何使用node.js将其转换为我的Google Cloud Function?我是否将Oauth令牌保存到某些变量,然后将它们添加到标头中?