gdata-java-client + oauth2 + access_token secret

时间:2011-11-22 14:14:00

标签: oauth gdata access-token google-api-java-client gdata-java-client

我目前正在尝试使用新的Java客户端,由于Google图库当前状态的遗留原因,我需要同时使用gdata和新的google java客户端API。

显然我想使用OAuth2 - 但是对于OAuth2,我没有获得访问令牌的秘密 - 这会导致问题b / c gdata要求访问令牌保密。

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

  • 或者我是否必须对gdata和新的google java客户端api使用OAuth1?
  • 还是有另一种方式吗?

由于

1 个答案:

答案 0 :(得分:13)

我找到了解决方案。 您可以按照http://code.google.com/apis/accounts/docs/OAuth2WebServer.html#callinganapi

中的说明设置特殊的HTTP标头(授权:承载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());
}

有点奇怪,我无法清楚地找到它。我只是巧合地发现了它。