我正在尝试使用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?我正在使用Signpost 1.2,除了这个提供商之外,它一直很棒。
答案 0 :(得分: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 );
顺便说一下,我通过社区支持论坛得到了答案,我不够聪明,不能自己搞清楚。 ; - )
答案 1 :(得分:1)
我们最近添加了对HMAC-SHA1签名的支持,因此您不再需要更改messageSigner。您将需要使用GET而不是POST。有关详细信息,请参阅我们的forum post。