1

背景/总结

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

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

ReferenceError:未定义“服务”。

细节和资源

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

权限设置如下:

网络应用

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

融合表库

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

OAuth 库

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

我的 OAuth 库代码

OAuth 库项目密钥:Mnt39sDQPQvSd3QGZFFLcznt7vnFOnL

融合表库代码

融合表库项目密钥: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 库的“共享”设置从“拥有链接的任何人都可以查看”更改为“拥有链接的任何人都可以编辑”,一切都会完美运行。我显然不想要我的图书馆的通用编辑权,所以我被困在为什么会发生这种情况,以及我需要做些什么来修复它。

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

4

1 回答 1

0

我已将此识别为 GAS 库中的更新传播错误。我已经在这里问题跟踪器提交了一个问题。

于 2013-04-13T15:40:32.210 回答