Аутентификация с помощью Google API с помощью AccountManager

Я борюсь с этим уже пару дней. Я пытаюсь позвонить в Календарь Google, используя аутентификацию через Android AccountManager .Я получаю токен аутентификации, используя обычный метод:

AccountManager manager = AccountManager.get(this);
String authToken = manager.getAuthToken(account, AUTH_TOKEN_TYPE, true, null, null).getResult().getString(AccountManager.KEY_AUTHTOKEN);

А затем с помощью этого токена я создаю экземпляр Calendar следующим образом:

HttpTransport transport = AndroidHttp.newCompatibleTransport();
JacksonFactory jsonFactory = new JacksonFactory();
GoogleAccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(accessToken);
Calendar calendar = Calendar.builder(transport, jsonFactory).setApplicationName("MyApp/1.0").setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
    @Override
    public void initialize(JsonHttpRequest request) {
        CalendarRequest calendarRequest = (CalendarRequest) request;
        calendarRequest.setKey(API_KEY);
    }
}).setHttpRequestInitializer(accessProtectedResource).build();

Однако, когда я делаю вызовы API, используя это, я получаю 401 Неавторизованная ошибка , показанная ниже. Обратите внимание, что я включил код для аннулирования истекших токенов аутентификации, поэтому я не считаю, что проблема здесь.

com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
{
    "code" : 401,
    "errors" : [ {
        "domain" : "global",
        "location" : "Authorization",
        "locationType" : "header",
        "message" : "Invalid Credentials",
        "reason" : "authError"
    } ],
    "message" : "Invalid Credentials"
}

Есть мысли о том, что я делаю неправильно?

6
задан Tyler Treat 2 March 2012 в 03:56
поделиться