'执行为我'时未经授权的401错误

时间:2018-02-15 16:39:57

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

我正在努力使用我部署的网络应用。当“所有人都可以使用链接”获得网站权限时,当应用设置为“以我身份执行”时,会从我的驱动器中正确删除电子表格并创建新文件。如果我限制访问某些电子邮件地址,则代码将不再有效。

我尝试使用

传递令牌
wordcount

不幸的是,执行响应是

  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);

我的驱动器中创建了一个带有html文本的Google文档,因此我认为访问权限可用,但权限已发生变化。有人能指出我正确的方向吗?

修改

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

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

1 个答案:

答案 0 :(得分:0)

我认为您可以使用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()检索的访问令牌具有上述范围。完成此设置后,请尝试再次运行您的脚本。在您的短信中,您可以使用auth与“任何人”访问网络应用程序。

如果这不起作用,请再次重新部署Web Apps。因为可能无法反映最新版本的Web Apps脚本。

参考:

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