我想进一步了解使用OAuth访问令牌访问Apps脚本网络应用程序时的工作方式。
这是Apps Script网络应用程序:
function doPost(e) {
return ContentService.createTextOutput('ok');
}
function doGet(e) {
return ContentService.createTextOutput('ok');
}
部署为:我
谁有权访问该应用:请参见下文
我使用Postman访问Apps Script Web应用程序。我调用了Web应用程序URL(以/exec
结尾),并提供了标题Authorization: Bearer ACCESS_TOKEN
。
我想念什么?
编辑
用于生成访问令牌的范围是https://www.googleapis.com/auth/drive
答案 0 :(得分:1)
此解决方法如何?
"Who has access to the app:": Anyone
部署的Web Apps时,必须将Web Apps脚本共享给用户。而且,访问令牌是必需的。这是自2018年4月11日起的规范。"Who has access to the app:": Anyone
下访问Web应用程序而不共享脚本。不幸的是,这可以通过规范直接实现。因此,需要考虑一种解决方法。
在上述情况下,当您想让用户访问Web Apps而不共享脚本时,我想提出以下解决方法。
"Who has access to the app:": Anyone, even anonymous
。通过上述设置,您可以使用户无需共享脚本即可访问Web Apps。在这种情况下,将使用密码代替访问令牌。
在此示例中,密码用作查询参数。可以像使用API密钥一样使用。
function doPost(e) {
if (e.parameter.password === "sample") {
return ContentService.createTextOutput("Done.");
}
return ContentService.createTextOutput("Error.");
}
function doGet(e) {
if (e.parameter.password === "sample") {
return ContentService.createTextOutput("Done.");
}
return ContentService.createTextOutput("Error.");
}
curl -L "https://script.google.com/macros/s/###/exec?password=sample"
Done.
返回doGet()
。如果密码错误,则返回Error.
。这样,您可以使用户无需共享脚本即可访问Web Apps。