gdata-java-client + oauth2 + access_token secret

Jav*_*Guy 5 oauth gdata gdata-java-client access-token google-api-java-client

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

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

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

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

谢谢

Chr*_*oph 13

我找到了解决方案.您可以设置一个特殊的HTTP-Header(授权: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());
}
Run Code Online (Sandbox Code Playgroud)

这有点奇怪,我发现它没有真正清楚地记录下来.我只是巧合地发现了它.