2013-05-03 131 views
0

我正在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}; 
    } 
} 
+1

所以“任何人”都可以执行它,您是如何设置“执行应用程序为”字段?我想象“用户访问应用程序”。 doGet()之后的第一个函数是做什么的?调用电子表格? – miturbe 2013-05-03 13:06:05

+0

是的,根据miturbe的说明,您可能在访问用户无法访问的代码中执行某些操作。他们可能能够访问Web应用程序,但无法执行任何操作,因为它可能会访问用户无法访问的资源(文件,电子表格等)。 – 2013-05-03 14:10:19

+0

访问MySQL数据库并验证用户是否有权访问脚本。我也使用'User'类来访问用户名。事实上,该字段设置为“用户访问应用程序”。 – Feanaro 2013-05-04 12:06:17

回答

1

访问UserManager是这里的问题。正如documentation所述,UserManager只能由管理员访问。

如果应用程序以普通用户身份运行,则无法访问UserManager。您可能需要重新调试部署/代码,以便像自己(或管理员)那样运行它。

+0

谢谢!你真的帮助我这个! – Feanaro 2013-05-10 08:15:34

相关问题