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: No authentication header informationエラーが発生します。
Google サイト、Google ドライブ、Google Apps プロビジョニング、Google メール設定は OAuth2 で問題なく動作します。しかし、OAuth2 を使用した Google Apps プロファイルではjava.lang.NullPointerException: No authentication header informationが返されます。私はインターネットをサーフィンしましたが、彼らはこれがバグだと言いましたか? 彼らが行ったのは、AccessToken を手動でヘッダーに渡すことだけです。とにかくこの回避策はありますか?これを使用して Cron ジョブを実行し、OAuth2 サービス アカウントを使用しているためです。
====
編集:
次のようなヘッダーを設定して、ブルートフォースを試みました。
service.setHeader("GData-Version", "3.0");
service.setUserCredentials(myusername, mypassword);
これは完璧に機能します。service.setOAuth2Credentials() は内部的にバグがあるようです。