2011-12-14 12 views
0

GoogleカレンダーAPIからユーザーカレンダーと予定を取得できます。基本的に私はAndroidのAccountManagerをから認証トークンを取得し、要求を行うために管理が、私は応答としてGoogleデータ(カレンダー)APIリクエストの承認ヘッズ

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

を取得します。それを生成するコードは(部分的です)。これをはじめて実行すると、アンドロイドは私が受け入れた自分のアプリのカレンダーデータへのアクセスを許可するように頼んだ。

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エラーを生成しました。

あなたにはヒントやドキュメントなどがありますが、嬉しいです。

編集私はちょうどその同じ結果で、経由で新しいものを取り出す

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

経由でトークンを無効にしようとしました。

答えて

2

承認ヘッダーの値に空白があります。"GoogleLogin auth=xxxxxxx".