GAS库和WebApp权限[ReferenceError:未定义“服务”.]

GAS Library and WebApp Permissions [ReferenceError: "service" is not defined.]

本文关键字:未定义 服务 ReferenceError 库和 WebApp 权限 GAS      更新时间:2023-09-26

背景/摘要

我一直在广泛使用库,现在我正在设置权限,以便将应用程序分发给一些用户进行测试。不幸的是,这是非常不可预测的。我将问题简化如下:

我有一个简单的webApp,它正在对一个融合表进行简单的API调用。它调用了我的Fusion Tables库中的一个函数。Fusion表库中的函数还使用了OAuth库中的一个函数。当从我的主gmail帐户(所有资源都属于该帐户(执行时,这个过程非常有效。但是,我现在正在设置权限,它将无法从其他帐户运行。当从另一个帐户执行此webApp时,我会收到以下错误(除了后面描述的一种情况(:

ReferenceError:未定义"服务"。

细节&资源

我使用的是Google的oAuthConfig类,它默认为OAuth1.0。

权限设置如下:

webApp

  • 执行身份:访问webApp的用户
  • 谁可以访问:任何人
  • 共享:任何拥有链接的人都可以查看

Fusion表库

  • 执行身份:访问webApp的用户
  • 谁可以访问:任何人
  • 共享:任何拥有链接的人都可以查看

OAuth库

  • 执行身份:访问webApp的用户
  • 谁可以访问:任何人
  • 共享:任何拥有链接的人都可以查看

我的OAuth库代码

OAuth库项目密钥:Mnt39sDQPQdSd3QZFFLcznt7vnFOnL

Fusion表库代码

Fusion表库项目密钥:MigHa1npbg9PnkaJ8jFENSyUlmcxk5wr2

复制错误的简化webApp:已发布的webApp(代码如下(

var oAuthFields = {
  'clientId' : '{...}',
  'scope' : 'https://www.googleapis.com/auth/fusiontables',
  'fetchUrl' : 'https://www.googleapis.com/fusiontables/v1/',
  'clientSecret' : '{...}',
  'fusionId' : '{...}',
  'service' : 'fusiontables',
  'queryUrl' : 'https://www.google.com/fusiontables/api/query'
};
function doGet() {
  var app = UiApp.createApplication();
  var tempVar = FTL.fusionRequest('GET', 'SHOW TABLES', oAuthFields);
  Logger.log('Result: ' + tempVar);
  app.add(app.createLabel('Success'));
  return app;
}

异常

现在,让事情变得更有趣的是,如果我将OAuth库的"共享"设置从"任何有链接的人都可以查看"更改为"任何有链路的人都能编辑",一切都会完美运行。我显然不希望我的图书馆拥有通用的编辑权,所以我一直纠结于为什么会发生这种情况,以及我需要做些什么来修复它

我不完全清楚在使用库时如何考虑"执行方式"answers"共享"设置。我希望任何人都可以访问webApp,并作为用户执行,我将以编程方式实现访问限制。

我已经确定这是GAS库中更新传播的错误。我已在此处向问题跟踪器提交了一个问题。