2012-05-18 7 views
0

Google 작업 및 캘린더 API를 모두 사용하는 Android 앱을 작성 중입니다. 작업을 통한 인증은 완벽하게 작동합니다. 하지만 캘린더 API에 액세스 할 때 'Google 서비스와 통신하는 동안 문제가 발생했습니다. 나중에 다시 시도하십시오.'라는 화면이 표시됩니다. "로그인 할 수 없습니다"라는 제목으로 다음을 클릭하면 로그인 ... 화면이 약 0.5 초 동안 표시된 다음 "문제가 발생했습니다"화면으로 다시 전송됩니다.Google 캘린더 API로 인증하기

내가 캘린더 API에 인증하는 코드는 다음과 같습니다. 잘 작동하는 Tasks API의 코드는 거의 동일합니다.

GoogleAccountManager google_manager = new GoogleAccountManager(this); 
Account[] accounts = google_manager.getAccounts(); 
Account my_account; 
if (accounts.length > 1) my_account = selectWhichAccount(accounts); 
else { 
    if (accounts.length == 0) display_no_account_dialog(); 
    Log.v("account",accounts[0].toString()); 
    my_account = accounts[0]; 
} 
final String AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/calendar"; 
Log.v("schedule","getting auth token"); 
google_manager.manager.getAuthToken(my_account, AUTH_TOKEN_TYPE, null, this, new AccountManagerCallback<Bundle>() { 

     @Override 
     public void run(AccountManagerFuture<Bundle> future) { 
      try { 
       String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN); 
       Log.d("schedule","starting scheduletask"); 
       start_ScheduleTask(t, token); 
      } catch (OperationCanceledException e) { 
       Log.v("accounts","denied access to account"); 
       handleException(e); 
      } catch (Exception e) { 
       handleException(e); 
      } 
     } 
    }, null); 

답변

0

으로 OAuth2 토큰은 사용하여 지정 '으로 OAuth2를'접두사가 부분적으로 만 AccountManager 지원하고 그들 중 일부는 작동하지 않습니다. 불행하게도, 현재 지원되지 않고 제공되지 않는 것은 현재 문서화되어 있지 않습니다 (AFAIK). ClientLogin (토큰 유형으로 'cl'사용) 또는 WebView를 사용하여 토큰 가져 오기 등 두 가지 방법이 있습니다. ClientLogin은 현재 잘 작동하지만 공식적으로 사용되지 않으며 약 1 년 후에 사라질 것입니다.