GAS库和WebApp权限[ReferenceError:“service”未定义。]

时间:2013-04-07 20:38:21

标签: javascript oauth google-apps-script google-fusion-tables

背景/摘要

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

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

  

ReferenceError:未定义“service”。

详情&资源

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

权限设置如下:

web应用

  • 执行为:访问webApp的用户
  • 谁有权访问:任何人
  • 分享:拥有该链接的任何人都可以查看

Fusion Table Library

  • 执行为:访问webApp的用户
  • 谁有权访问:任何人
  • 分享:拥有该链接的任何人都可以查看

OAuth图书馆

  • 执行为:访问webApp的用户
  • 谁有权访问:任何人
  • 分享:拥有该链接的任何人都可以查看

My OAuth Library Code

OAuth Library项目密钥:Mnt39sDQPQvSd3QGZFFLcznt7vnFOnL

Fusion Table Library Code

Fusion Table Library项目密钥:MigHa1npbg9PnkaJ8jFENSyUlmcxk5wr2

重现错误的简化webApp:Published 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库的“共享”设置从“有链接可以查看的任何人”更改为“有链接可以编辑的任何人”,那么一切都很完美。我显然不希望我的库具有通用编辑权限,因此我不知道为什么会发生这种情况,以及我需要做些什么来修复它。

我不清楚在使用库时如何考虑'执行'和'共享'设置。我希望任何人都可以访问webApp,以用户身份执行,我将以编程方式实现访问限制。

1 个答案:

答案 0 :(得分:0)

我已将此识别为GAS库中更新传播的错误。我已向here提交了问题issue tracker