GAS库和WebApp权限[ReferenceError:未定义“服务”.]
GAS Library and WebApp Permissions [ReferenceError: "service" is not defined.]
背景/摘要
我一直在广泛使用库,现在我正在设置权限,以便将应用程序分发给一些用户进行测试。不幸的是,这是非常不可预测的。我将问题简化如下:
我有一个简单的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库中更新传播的错误。我已在此处向问题跟踪器提交了一个问题。
- Ember服务在注入组件并在计算属性中使用后是未定义的
- 未定义服务
- Http服务工厂将未定义的返回到Angular中的控制器
- 角度服务未定义
- 通过C#向区块链服务发送请求时未定义XMLHttpRequest
- 服务变量分配了数据,但在访问时始终未定义
- 承诺返回未定义的服务
- 从服务返回值时$scope控制器的变量是未定义的
- 提供“角服务”;TypeError:无法读取属性'helloConsole'“未定义”;
- 正在从web服务接收未定义的信息
- Angular 1.5.4服务未定义
- Angularjs自定义服务变量未被$http成功定义
- 使用路由的未定义服务控制器
- Web服务返回给javascript的值是未定义的
- 返回未定义的角度服务不是一个函数
- 无法使用服务AngularJS - “无法读取未定义的属性'原型'”
- 服务函数返回未定义
- 类型错误:parsed 在 angularjs 服务单元测试中未定义
- 尽管注入了$http,但它在服务中是未定义的
- GAS库和WebApp权限[ReferenceError:未定义“服务”.]