gdata-java-client + oauth2 + 访问令牌密钥

5

我目前正在尝试使用新的Java客户端,但由于谷歌库的历史原因,我需要同时使用gdata和新的Google Java客户端API。

显然,我想使用OAuth2 -- 但是使用OAuth2时,我没有得到访问令牌密钥 -- 这会导致问题,因为gdata需要访问令牌密钥。

请问是否有解决方法,例如: - 是否有办法仅使用访问令牌(OAuth2)而不使用访问令牌密钥来使用gdata Java库?代码示例(和尝试)并未证实这一点,但也许我做错了什么

  • 或者我必须同时使用OAuth1来使用gdata和新的Google Java客户端API?
  • 还是有其他方法?

谢谢


我也很感兴趣。我正在使用这里的Oauth2示例http://code.google.com/p/google-api-java-client/wiki/OAuth2Draft10,但是当使用例如com.google.gdata.client.spreadsheet.SpreadsheetService.SpreadsheetService(String)时,我找不到使用访问令牌的方法。 - Christoph
1个回答

13
我找到了一个解决方案。 您可以设置一个特殊的HTTP头(Authorization: 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());
}

有点奇怪,我找不到清晰的文档说明。我只是偶然发现了它。


1
谢谢Christoph - 非常好。我实际上很幸运,Google恰好更新了我需要的库到新的Google Java客户端API。是的,他们的文档需要一些改进... - Java Guy
1
如果我们使用新的Google Java客户端API,那么我们可以直接从API中使用OAUTH 2.0,对吗?如果我错了,请纠正我。我上周开始使用电子表格API,但无法实现我的目标。另外,我想补充一点,如果我有已发布的电子表格,是否需要授权?请帮帮我。 - Scorpion
谢谢!我先前访问的其他网站都提供了无法编译、无法运行的示例。我简直不敢相信 Google 的那些白痴没有在他们的文档中加入这个。 - Jesse Barnum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接