0

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

这可能是什么原因造成的?

4

3 回答 3

1

更改网站网址以使用 https - 我遇到了同样的问题。

于 2011-03-08T10:22:22.750 回答
1

Evernote 的示例代码现在包含一个使用 OAuth gem 的 Ruby OAuth 示例。您可以从http://www.evernote.com/about/developer/api/下载示例代码。

在这种情况下,您需要在获取请求令牌时传递 oauth_callback 参数,因为印象笔记 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 默认使用的。

于 2011-03-08T16:04:32.780 回答
0

您需要将您的 OAuth 使用者密钥和使用者密码放入当前显示“consumer_key_here”和“consumer_secret_here”的新方法中。

如果你的真实代码确实有值,请检查并确保它们是正确的——这听起来很傻,但我昨天在使用 OAuth 时遇到了同样的问题,结果证明我使用了错误的变量。

于 2011-02-14T14:06:05.753 回答