You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用有效OAuth令牌向Google Apps Script Web App发POST请求遇401未授权错误

解决Python向Google Apps Script Web App发送POST请求时的401 Unauthorized错误

以下是针对你遇到问题的排查和解决步骤:

1. 修正OAuth 2.0权限范围

你当前使用的权限范围仅适用于项目管理和部署操作,缺少访问Web App所需的执行权限。将SCOPES替换为包含https://www.googleapis.com/auth/script.webapp.execute的范围:

SCOPES = [
    'openid',
    'https://www.googleapis.com/auth/script.webapp.execute'
]

这个范围才是允许用户执行Web App的核心权限,之前的script.projects和script.webapp.deploy无法直接用于Web App的访问请求。

2. 检查Web App的访问权限配置

你的appsscript.json中access设置为DOMAIN,这意味着只有所属Google Workspace域名内的用户才能访问:

  • 如果你的Python脚本使用的账号不在该域名下,可临时将access改为ANYONE(测试环境),或者确认账号属于目标域名
  • 保持executeAs: "USER_ACCESSING"是正确的,确保请求以令牌对应的用户身份执行

3. 确认请求的是正式部署的Web App URL

确保你请求的是已发布的正式版本URL,而非编辑器中的测试URL(URL包含/dev后缀)。测试URL仅支持浏览器访问,脚本请求必须使用正式部署的URL。

4. 验证doPost函数的JSON解析逻辑

确保你的doPost函数正确处理JSON格式的请求体,示例如下:

function doPost(e) {
  if (!e.postData || e.postData.type !== 'application/json') {
    return ContentService.createTextOutput(JSON.stringify({error: 'Invalid content type'}))
      .setMimeType(ContentService.MimeType.JSON);
  }
  const payload = JSON.parse(e.postData.contents);
  return ContentService.createTextOutput(JSON.stringify({message: 'Received', data: payload}))
    .setMimeType(ContentService.MimeType.JSON);
}

5. 检查令牌的受众(Audience)

Google OAuth令牌的受众(aud字段)必须匹配Web App的URL。你可以通过以下方式验证:

  • 调用https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=YOUR_TOKEN端点,检查返回的aud字段是否为你的Web App URL
  • 如果受众不匹配,重新获取包含正确范围的令牌

内容的提问来源于stack exchange,提问作者steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:04:53