2013-05-03 9 views
0

Google 애플리케이션 스크립트에 애플리케이션을 구축 중입니다. 나는 logonid가 응용 프로그램을 사용할 수 있는지 확인하여 도메인 사용자를 인증합니다. 테스트 단계에 진입했을 때 실제로 응용 프로그램을 사용할 수있는 유일한 사용자였습니다. 웹 앱 게시 마법사에서 "누구에게 액세스 권한이 있습니까?"콤보 상자를 "모든 사용자"에게 설정했지만.사용자가 애플리케이션에 액세스 할 수 없음

사용자가 응용 프로그램을 실행할 때 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

+0

예, miturbe의 메모에 따르면 코드에서 액세스하는 사용자는 액세스 권한이없는 것으로 보입니다. 사용자가 액세스 할 수없는 리소스 (파일, 스프레드 시트 등)에 액세스 할 수 있기 때문에 웹 응용 프로그램에 액세스 할 수 있지만 아무 것도 할 수 없습니다. –

+0

It MySQL 데이터베이스에 액세스하여 사용자가 스크립트에 액세스 할 수 있는지 확인합니다. 또한'User' 클래스를 사용하여 사용자 이름에 액세스합니다. 실제로이 입력란은 '사용자가 앱에 액세스하는 중'으로 설정됩니다. – Feanaro

답변

1

액세스 UserManager에 여기에 문제가 :

UserManager 
Session 
Jdbc 
Utilities 
Logger 

이것은의 doGet() 함수 이후에 호출되는 함수입니다. documentation 상태로 UserManager은 관리자 만 액세스 할 수 있습니다.

앱이 일반 사용자로 실행 중이면 UserManager에 액세스 할 수 없습니다. 배포/코드를 스스로 (또는 관리자)로 실행하도록 재검토해야 할 수도 있습니다.

+0

감사합니다! 너 정말 이걸 도와 줬어! – Feanaro

관련 문제