Я зарегистрировал свое веб-приложение для использования с oath2, используя следующие инструкции:
http://code.google.com/apis/accounts/docs/OAuth2.html
Это означает, что мой клиент создан с идентификатором клиента, секретом клиента и URI перенаправления.
Как только я настроил свое веб-приложение в соответствии с
http://code.google.com/apis/accounts/docs/OAuth2WebServer.html
Я получаю код в параметре запроса от Google, который затем можно использовать для запроса доступатокен, который поставляется в формате JSON в формате:
{"access_token": "1 / fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "Bearer"}
Как только это будет сделано, я могу использовать этот токен доступа для доступа к API Google от имени пользователя:
GET https://www.googleapis.com/oauth2/v1/userinfo?access_token=1/fFBGRNJru1FQd44AzqT3Zg
Это, как задокументировано, выполняется путем простой передачи доступатокен в качестве параметра запроса.
Однако, когда я перехожу на использование Java API (в данном случае контактов Google), я получаю следующее в документации для HMAC-SHA1:
GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
oauthParameters.setOAuthToken(ACCESS_TOKEN);
oauthParameters.setOAuthTokenSecret(TOKEN_SECRET);
DocsService client = new DocsService("yourCompany-YourAppName-v1");
client.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());
URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full");
DocumentListFeed resultFeed = client.getFeed(feedUrl, DocumentListFeed.class);
for (DocumentListEntry entry : resultFeed.getEntries()) {
System.out.println(entry.getTitle().getPlainText());
}
Илиследующее для RSA-SHA1
GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
oauthParameters.setOAuthToken(ACCESS_TOKEN);
PrivateKey privKey = getPrivateKey("/path/to/your/rsakey.pk8"); // See above for the defintion of getPrivateKey()
DocsService client = new DocsService("yourCompany-YourAppName-v1");
client.setOAuthCredentials(oauthParameters, new OAuthRsaSha1Signer(privKey));
URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full");
DocumentListFeed resultFeed = client.getFeed(feedUrl, DocumentListFeed.class);
for (DocumentListEntry entry : resultFeed.getEntries()) {
System.out.println(entry.getTitle().getPlainText());
}
First off, кажется, что если бы я делал стандартный http, а не java-оболочку, все, что мне нужно было бы предоставить - это токен доступа.Я что-то упустил или откуда появились эти дополнительные параметры?В основном TOKEN_SECRET, о котором нет упоминания в документации.Также нет упоминания о необходимости указывать CONSUMER_KEY и CONSUMER_SECRET.Я предполагаю, что они являются альтернативными именами для идентификатора клиента и секрета клиента, но я не понимаю, почему я теперь должен предоставить их.Наконец, при настройке моего приложения с помощью консоли API Google не было упоминания о двух разных типах шифрования, и какой из них я собираюсь использовать, я что-то здесь тоже упускаю?