API профилей Google Apps: java.lang.NullPointerException: нет информации заголовка аутентификации

public ContactFeed retrieveContacts(ContactsService service,
                                    Credential credential) throws Exception {

    URL url = new URL("https://www.google.com/m8/feeds/profiles/domain/my.domain.com/full");

    service.setOAuth2Credentials(credential);
    service.useSsl();
    service.setHeader("GData-Version", "3.0");

    ContactFeed contactFeed = new ContactFeed();

    do {
        ContactFeed feedResult = service.getFeed(url, ContactFeed.class);
        contactFeed.getEntries().addAll(feedResult.getEntries());

        if (feedResult.getNextLink() != null && feedResult.getNextLink().getHref() != null
                && !feedResult.getNextLink().getHref().isEmpty()) {
            url = new URL(feedResult.getNextLink().getHref());
        } else {
            url = null;
        }
    } while (url != null);

    return contactFeed;
}

Это мой код для получения профилей. При запуске этой линии

ContactFeed feedResult = service.getFeed(query, ContactFeed.class);

Это даст java.lang.NullPointerException: нет ошибки информации заголовка аутентификации.

У меня есть Сайты Google, Google Диск, Предоставление Служб Google, Настройки электронной почты Google, которые хорошо работают с OAuth2. Но профиль Служб Google с OAuth2 дает исключение java.lang.NullPointerException: нет информации заголовка аутентификации. Я бродил по интернету, они сказали, что это ошибка? Все, что они сделали, это вручную передали AccessToken в заголовок. Есть ли что-нибудь для этой работы? Потому что я использую это для запуска в Cron Job и использую служебную учетную запись OAuth2.

====

Редактировать:

Я попытался перебором с помощью set header:

service.setHeader("GData-Version", "3.0");
service.setUserCredentials(myusername, mypassword);

Это работает просто отлично. У service.setOAuth2Credentials() внутренняя ошибка.

2 ответа

Я нашел причину, по которой service.setOAuth2Credentials() не работает при создании новых учетных данных Google (сборка с использованием P12File).

Это связано с тем, что service.setOAuth2Credentials() не обновляет внутренний токен, как другие сервисы на сайтах Google, Google Drive и т. Д.

Если вы создаете учетные данные Google с помощью P12File, просто добавьте эту строку после создания учетных данных Google.

googleCredential.refreshToken();

Я предполагаю, что это ошибка для ContactsService.setOAuth2Credentials().

У меня была эта проблема при использовании SecureSociale для аутентификации.

В моем случае проблема была связана с областью, определенной в конфигурации SecureSociale.

Не забудьте проверить, что вы используете правильную область действия для данного токена.

Другие вопросы по тегам