Аутентификация OAuth с помощью Evernote (с использованием Java+Signpost)
Вопрос
Я пытаюсь использовать аутентификацию OAuth для подключения к различным службам.По большей части это работает (проверено с помощью twitter/photobucket), но с Evernote я получаю код ответа 400.
Что здесь не так?
OAuthConsumer consumer = new DefaultOAuthConsumer( "myConsumerKey", "myConsumerSecret" );
OAuthProvider provider = new DefaultOAuthProvider( "https://sandbox.evernote.com/oauth", "https://sandbox.evernote.com/oauth", "https://sandbox.evernote.com/OAuth.action" );
String authUrl = provider.retrieveRequest( consumer, OAuth.OUT_OF_BAND );
Это работает для Twitter + Photobucket, так почему бы не Evernote?я использую Указатель 1.2, и это было здорово, за исключением одного провайдера.
Решение
Скорее всего, подписавший.Evernote поддерживает только подпись в виде обычного текста.Вы также можете получить ошибку 405, в этом случае переопределите createRequest
метод использования GET вместо POST.
AuthConsumer consumer = new DefaultOAuthConsumer( "myConsumerKey", "myConsumerSecret" );
consumer.setMessageSigner( new PlainTextMessageSigner() );
OAuthProvider provider = new DefaultOAuthProvider( "https://sandbox.evernote.com/oauth", "https://sandbox.evernote.com/oauth", "https://sandbox.evernote.com/OAuth.action" );
String authUrl = provider.retrieveRequest( consumer, OAuth.OUT_OF_BAND );
Кстати, я получил ответ на форуме поддержки сообщества, но я недостаточно умен, чтобы разобраться в этом самостоятельно.;-)
Другие советы
Недавно мы добавили поддержку подписи HMAC-SHA1, поэтому вам больше не нужно менять messageSigner.Вам нужно будет использовать GET вместо POST.Более подробную информацию можно получить у нашего сообщение на форуме.