我正在Google Apps脚本中构建应用程序。我通过检查他们的logonid是否被允许使用应用程序来验证域用户。 我开发了它,当我进入测试阶段时,我是唯一可以真正使用该应用程序的用户。 虽然我已将Web应用发布向导中的“Who has Access”组合框设置为“任何人”。用户无权访问应用程序
当用户执行应用程序时,他会得到一个异常,说他在doGet()之后执行第一个函数时没有访问权限。我忽略了一些设置还是我做错了什么?
我用下面的类:
UserManager
Session
Jdbc
Utilities
Logger
这是中的doGet()函数后调用的函数:
function authenticateUser() {
try {
var user = UserManager.getUser(Session.getActiveUser());
Logger.log('User: ' + user.getEmail());
if (user == undefined || user == null) {
return {authenticated: false};
} else {
var auth = _getAuth();
if (!auth.isAuthorized(user.getEmail())) {
Logger.log('Not authorized in database.');
return {authenticated: false};
} else {
var profile = auth.getProfile(user.getEmail());
authenticated = true;
auth.setLogin(user.getEmail());
if(!profile.firstLogin) {
activeProfile = profile;
}
activeUser = user;
return {profile: profile, authenticated: true};
}
}
} catch(ex) {
Logger.log(ex);
return {authenticated: false};
}
}
所以“任何人”都可以执行它,您是如何设置“执行应用程序为”字段?我想象“用户访问应用程序”。 doGet()之后的第一个函数是做什么的?调用电子表格? – miturbe 2013-05-03 13:06:05
是的,根据miturbe的说明,您可能在访问用户无法访问的代码中执行某些操作。他们可能能够访问Web应用程序,但无法执行任何操作,因为它可能会访问用户无法访问的资源(文件,电子表格等)。 – 2013-05-03 14:10:19
访问MySQL数据库并验证用户是否有权访问脚本。我也使用'User'类来访问用户名。事实上,该字段设置为“用户访问应用程序”。 – Feanaro 2013-05-04 12:06:17