0

我正在 Google Apps 脚本中构建一个应用程序。我通过检查是否允许他们的 logonid 使用应用程序来验证域用户。我开发了它,当我进入测试阶段时,我是唯一可以实际使用该应用程序的用户。尽管我已将网络应用发布向导上的“谁有权访问”组合框设置为“任何人”。

当用户执行应用程序时,在执行 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};
  }
}
4

1 回答 1

1

访问UserManager是这里的问题。正如文档所述,UserManager只有管理员可以访问。

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

于 2013-05-05T21:57:34.153 回答