尝试使用OAuth从Evernote获取请求令牌时出现401 oauth_signature错误

时间:2011-02-14 13:20:32

标签: ruby-on-rails oauth evernote

我正在尝试使用带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

导致这种情况的原因是什么?

3 个答案:

答案 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中遇到了同样的问题,事实证明我使用了错误的变量。

相关问题