【发布时间】:2019-10-15 14:18:38
【问题描述】:
我想进一步了解 Apps Script Web 应用程序在使用 OAuth 访问令牌访问它们时的工作原理。
这是 Apps Script 网络应用:
function doPost(e) {
return ContentService.createTextOutput('ok');
}
function doGet(e) {
return ContentService.createTextOutput('ok');
}
它被部署为:我
谁有权访问该应用:见下文
我使用 Postman 访问 Apps Script 网络应用。我调用 Web 应用 URL(以 /exec 结尾),并提供标头 Authorization: Bearer ACCESS_TOKEN。
我使用 Google OAuth Playground 生成访问令牌
- 我以我的身份登录:它适用于每个“有权访问应用程序的人”权限,这是我所期望的。
- 在域中以其他人身份登录:仅适用于“任何人,甚至匿名”权限,并且仅当传入请求没有授权标头时。否则我会收到 403 Forbidden 错误。
我希望它适用于以下权限:
- '任何人,甚至匿名',即使请求具有授权标头
- '任何人'
- '域内的任何人'
- 以域外的其他人身份登录:仅适用于“任何人,甚至匿名”权限,并且仅当传入请求没有授权标头时。否则我会收到 403 Forbidden 错误。
我希望它适用于以下权限:
- '任何人,甚至匿名',即使请求具有授权标头
- '任何人'
我错过了什么?
编辑
用于生成访问令牌的范围是https://www.googleapis.com/auth/drive
【问题讨论】:
-
虽然我不确定这是否与您的问题直接相关,但能否请教一下访问令牌中包含的范围?
-
感谢您的回复。根据您的回复,我认为范围不是您问题的原因。
-
你能告诉我们出现403状态码时的错误信息吗?
-
因此,例如部署应用程序时将 who-can-access 设置为“任何人”,并以域外用户的身份登录,响应是一个 html 页面。标题是“您需要许可”,内容是“想加入?请求访问权限,或切换到具有权限的帐户。了解更多。您以 xxxxx 身份登录,并显示“请求访问”按钮