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

使用Bearer令牌认证Google App Script时跨账号REST调用异常排查

问题求助:Google Apps Script Web应用非所有者REST调用失败

场景说明

  • 在iOS客户端配置Google登录
  • 获取Forms和Drive的accessToken(后续App Script将使用此令牌)
  • 编写以下简单的App Script以返回表单的相关信息
function doGet(request) {
  if (request.parameter.formId !== undefined) {
    const formId = String(request.parameter.formId);
    const form = FormApp.openById(formId);
    return ContentService.createTextOutput(JSON.stringify({
      'status': 'success',
      "message": form.isAcceptingResponses()
    }));
  }
}
  • 将该App Script部署为Web应用,使用其公开URL;设置为“任何人可执行”并以“当前用户”身份运行
  • 从iOS客户端调用该端点,携带Authorization: Bearer ***请求头(传入通过原生OAuth流程获取的有效未过期令牌)

问题现象

上述场景对于App Script项目所属的Google账号完全正常(无论是浏览器直接访问URL还是REST调用)。其他Google账号通过浏览器访问该URL时也能正常工作。

但对于非项目所有者的Google账号,通过REST调用App Script时失败,响应为HTML页面内容。未提供有效Bearer令牌时,HTML响应明确显示“未授权”;提供令牌后,返回的HTML页面内容不定。

已确认信息

经过排查,已确认以下内容:

  • appscript.json清单文件包含正确的oauthScopes
  • 客户端请求的OAuth令牌与这些权限范围匹配
  • 关联的单个Google Cloud项目已启用Drive和Forms API
  • 尝试调用/dev版本的URL,排查是否因项目未通过权限验证而返回不安全客户端页面

部署设置如下:
部署设置截图


目前对问题原因感到困惑,恳请提供帮助。可补充任何遗漏的上下文信息。

是否可能是项目未通过Google验证导致的?但我认为应该可以使用多个账号测试该Web应用URL?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:27:39