我正在尝试使用带Ruby on Rails的OAuth gem获取Evernote请求令牌:
customer = OAuth::Consumer.new("consumer_key_here", "consumer_secret_here",{ :site=>"http://sandbox.evernote.com/",:request_token_path => "/oauth",:oauth_signature_method => "PLAINTEXT" })
@request_token = customer.get_request_token
但是我收到了这个错误
OAuth::Unauthorized in PagesController#home
401 oauth_signature
导致这种情况的原因是什么?
答案 0 :(得分:1)
更改网站网址以使用https - 我遇到了同样的问题。
答案 1 :(得分:1)
Evernote的示例代码现在包含一个使用OAuth gem的Ruby OAuth示例。您可以从http://www.evernote.com/about/developer/api/下载示例代码。
在这种情况下,您需要在获取请求令牌时传递oauth_callback参数,因为Evernote OAuth提供程序实现了OAuth 1.0a。
consumer = OAuth::Consumer.new(consumerKey, consumerSecret, {
:site => "https://sandbox.evernote.com/",
:request_token_path => "/oauth",
:access_token_path => "/oauth",
:authorize_path => "/OAuth.action"})
requestToken = consumer.get_request_token(
:oauth_callback => "http://www.me.com/callback")
此外,无需将签名方法设置为PLAINTEXT; Evernote的提供商支持HMAC-SHA1,这是OAuth gem默认使用的。
答案 2 :(得分:0)
您需要将OAuth使用者密钥和使用者密钥放在当前显示为“consumer_key_here”和“consumer_secret_here”的新方法中。
如果你确实有真实代码的值,检查并确保它们是正确的 - 这听起来很愚蠢,但昨天我在OAuth中遇到了同样的问题,事实证明我使用了错误的变量。