【问题标题】:Unauthorized 401 error while 'execute as me'“以我身份执行”时出现未经授权的 401 错误
【发布时间】:2018-02-15 16:39:57
【问题描述】:

我正在为我部署的网络应用程序而苦苦挣扎。当“所有具有链接的人”都可以使用站点权限时,由于应用程序设置为“以我身份执行”,电子表格将从我的驱动器中正确删除并创建一个新文件。如果我限制对某些电子邮件地址的访问,代码将不再有效。

我尝试使用

传递令牌
  var auth = ScriptApp.getOAuthToken();
  var header = {
    "authorization": "Bearer " + auth
  };
  var params = { 'method':'post', 'headers':header, 'muteHttpExceptions':true};
  var response = UrlFetchApp.fetch(fileURL, params);
  Logger.log(response);

不幸的是执行响应是

<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>

在我的驱动器中创建了一个带有 html 文本的 Google Doc,因此我认为可以访问,但权限有所改变。谁能指出我正确的方向?

编辑

看起来脚本需要我重新登录,即使我正在传递 OAuth2 访问令牌。 https://developers.google.com/apps-script/reference/script/script-app#getOAuthToken()

Google 网站的范围已经到位,所以我不确定为什么我无法让响应正常工作。它在 UrlFetchApp 上失败了,但仅传递 OAuth2 令牌似乎还不够。

【问题讨论】:

  • 谁有权访问该应用程序?是设置为“任何人”还是“任何人,甚至是匿名的”?
  • 设置为“任何人”

标签: google-apps-script authorization google-oauth google-sites


【解决方案1】:

我认为您可以使用 Manifest 以“任何人”访问 Web 应用程序。请尝试执行以下流程。

  • 在项目的脚本编辑器中使用 URL 获取方法。
    1. 查看 -> 显示清单文件
    2. 请将以下 oauthScopes 添加到 appsscript.json
      • "oauthScopes": ["https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/drive"]

由此,ScriptApp.getOAuthToken() 检索到的访问令牌具有上述范围。完成此设置后,请尝试再次运行您的脚本。在您的 sceipt 中,您可以使用 auth 以“任何人”访问 Web 应用程序。

如果这不起作用,请重新部署网络应用程序。因为可能不会反映最新版本的 Web 应用脚本。

参考:

如果这对你没有用,我很抱歉。

【讨论】:

  • 感谢田池的回复。事实证明,使用 Google 协作平台,您需要指定特定的提要 URI 才能访问附件(当限制权限时),而不是从站点下载链接。范围已经确定,包括网站https://sites.google.com/feeds 的范围,但我感谢您抽出时间回复。
  • 很抱歉没能帮到你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 2022-11-09
  • 2013-08-09
相关资源
最近更新 更多