5

現在、新しい Java クライアントを使用しようとしていますが、Google ライブラリの現在の状態に関する従来の理由により、gdata と新しい Google Java クライアント API の両方を使用する必要があります。

明らかに、OAuth2 を使用したいのですが、OAuth2 ではアクセス トークン シークレットを取得できません。これにより、b/c gdata にはアクセス トークン シークレットが必要であるという問題が発生します。

誰でも回避策についてアドバイスできますか。- アクセス トークン (OAuth2) のみで gdata Java ライブラリを使用し、アクセス トークン シークレットを使用しない方法はありますか? コード例(および試み)はこれを裏付けていませんが、おそらく私は何か間違ったことをしています

  • または、gdata と新しい Google Java クライアント API の両方に OAuth1 を使用する必要がありますか?
  • または別の方法がありますか?

ありがとう

4

1 に答える 1

13

解決策を見つけました。http://code.google.com/apis/accounts/docs/OAuth2WebServer.html#callinganapiに記載されているように、特別な HTTP ヘッダー (承認: Bearer ACCESS_TOKEN) を設定できます。

accessToken を受け取ったら (たとえば、このhttp://code.google.com/p/google-api-java-client/wiki/OAuth2Draft10のように)、次のように「古い」gdata サービスを呼び出すことができます。

SpreadsheetService service = new SpreadsheetService("yourAppName");
service.setHeader("Authorization", "Bearer " + accessToken);
URL metafeedUrl = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full");
SpreadsheetFeed feed = service.getFeed(metafeedUrl, SpreadsheetFeed.class);

List<SpreadsheetEntry> spreadsheets = feed.getEntries();
for (int i = 0; i < spreadsheets.size(); i++) {
  SpreadsheetEntry entry = spreadsheets.get(i);
  System.out.println("\t" + entry.getTitle().getPlainText());
}

本当に明確に文書化されているのを見つけることができなかったのは少し奇妙です。たまたま見つけただけです。

于 2011-12-28T13:22:41.457 に答える