5

我目前正在尝试使用新的 java 客户端,并且由于谷歌库当前状态的遗留原因,我需要同时使用 gdata 和新的谷歌 java 客户端 api。

显然我想使用 OAuth2——但是使用 OAuth2 我没有获得访问令牌秘密——这会导致问题 b/c gdata 需要访问令牌秘密。

任何人都可以建议解决方法,例如。- 有没有办法使用只有访问令牌(OAuth2)而不是访问令牌秘密的gdata java库?代码示例(和尝试)不能证实这一点,但也许我做错了什么

  • 还是我必须为 gdata 和新的谷歌 java 客户端 api 使用 OAuth1?
  • 还是有其他方法?

谢谢

4

1 回答 1

13

我找到了解决方案。您可以设置一个特殊的 HTTP 标头(授权:Bearer ACCESS_TOKEN),如http://code.google.com/apis/accounts/docs/OAuth2WebServer.html#callinganapi中所述

一旦您收到您的 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 回答