2011-12-14 131 views
0

我希望能夠從Google日曆API檢索用戶日曆和事件。基本上,我設法從Android的AccountManager獲得一個Auth-Token並執行請求,但我得到了Google數據(日曆)API授權授權 - 前端

"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "authError", 
    "message": "Invalid Credentials", 
    "locationType": "header", 
    "location": "Authorization" 
    } 
    ], 
    "code": 401, 
    "message": "Invalid Credentials" 
    } 
    } 

作爲響應。生成它的代碼是(部分)。第一次運行這個時,Android要求我授權訪問我的日曆數據,以便接受我的應用程序。

final Account account = manager.getAccountsByType("com.google")[0]; 

    AccountManagerFuture<Bundle> accountManagerFuture = 
      manager.getAuthToken(account, "cl", true, 
        new AccountManagerCallback<Bundle>() { 

         public void run(AccountManagerFuture<Bundle> future) { 
          try { 
           Bundle bundle = future.getResult(); 

           if (bundle.containsKey(AccountManager.KEY_AUTHTOKEN)) { 

            final String authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN); 

            final Uri usersCalendars = Uri.parse(
              "https://www.googleapis.com/calendar/v3/users/me/calendarList") 
              .buildUpon() 
              .appendQueryParameter("key","--myapikey--") 
              .build(); 

            HttpClient client = new DefaultHttpClient(); 

            HttpGet request = new HttpGet(usersCalendars.toString()); 

            request.setHeader("Authorization","GoogleLoginAuth=" + authToken); 
            request.setHeader("GData-Version","3.0"); 

            HttpResponse response = client.execute(request); 

            // outputting response, logging etc 

正如你所看到的,我沒有使用google-api-java-client,因爲我無法得到一個飛行任一。基本上,示例代碼調用了不再存在的方法/將其移至Android的AccountManager,而android-calendar-example產生了401 eror,而不是列出我的日曆。

如果你們有任何提示,文檔等,我會很高興。

編輯我只是想通過

manager.invalidateAuthToken("com.google",authToken); 

無效令牌然後檢索通過一個新的,具有相同的結果。

回答

2

有瓦特授權報頭值在B/A空間 - "GoogleLogin auth=xxxxxxx".