gdata-java-client + oauth2 + access_token secret
В настоящее время я пытаюсь использовать новый клиент (ы) Java, и в связи с устаревшими причинами текущего состояния библиотек Google мне нужно использовать и gdata, и новый API Java клиента Google.
Очевидно, я хотел бы использовать OAuth2 - однако с OAuth2 я не получаю секрет токена доступа - что вызывает проблему, поскольку b/c gdata требует секрета токена доступа.
Может ли кто-нибудь, пожалуйста, посоветуйте решение, например. ли использовать библиотеки Java gdata только с токен доступа (OAuth2) и не секрет токена доступа? Примеры кода (и попытки) не подтверждают это, но, возможно, я что-то делаю неправильно
- или я должен использовать OAuth1 как для gdata, так и для нового API Java-клиента Google?
- или есть другой способ?
Спасибо
1 ответ
Я нашел решение. Вы можете установить специальный HTTP-заголовок (Авторизация: Bearer ACCESS_TOKEN), как описано в http://code.google.com/apis/accounts/docs/OAuth2WebServer.html
После того как вы получили 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());
}
Это немного странно, что я не мог найти это действительно задокументированным ясно. Я просто нашел это по стечению обстоятельств.