我正在尝试使用OAuth gem在我的Ruby on Rails应用程序中验证Evernote。我正在使用一个教程来验证Twitter - http://blog.brijeshshah.com/integrate-twitter-oauth-in-your-rails-application/,因为我找不到一个Evernote。
到目前为止,我已经让用户授权我的应用程序,现在拥有临时凭证:
customer = OAuth::Consumer.new("xxx", "xxx",{
:site=>"https://sandbox.evernote.com/",
:request_token_path => "/oauth",
:access_token_path => "/oauth",
:authorize_path => "/OAuth.action"})
@request_token = customer.get_request_token(:oauth_callback => "http://localhost:3000/create_evernote_step_2")
session[:request_token] = @request_token.token
session[:request_token_secret] = @request_token.secret
redirect_to @request_token.authorize_url
所以现在我有了oauth_token和oauth_verifier,需要将它们变成访问令牌。这部分Twitter教程似乎特定于Twitter,所以我现在确定如何处理Evernote的情况。任何人都可以帮助我吗?
答案 0 :(得分:5)
Evernote的示例代码现在包含一个使用OAuth gem的Ruby OAuth示例。您可以从http://www.evernote.com/about/developer/api/下载示例代码。在这种情况下,下一步是交换令牌凭证的临时凭证:
access_token = @request_token.get_access_token(:oauth_verifier => oauth_verifier)
oauth_verifier作为回调URL的一部分传递给您的应用程序。
答案 1 :(得分:0)
嘿,伙计,我也开始走这条路,在那里我将Oauth整合到我的其他应用中。
您应该查看oauth-plugin on github,因为它会为您处理所有业务。
它应该可以帮到你大部分的方式,如果有一个“怪异”的oauth提供程序不是“流行”它允许你将它添加到配置文件中。这就是我对我的所作所为。
一个建议是覆盖OauthConsumersController中的所有方法,并根据需要“调整”它们。我知道我必须做得很好,更容易看到他用他的插件做了什么并从那里调整它。天啊,也许他甚至有一条路径你可以在他的代码中遵循你的确切问题而且你不需要他所有的插件(因为他也使用oauth gem)。
答案 2 :(得分:0)
除了Evernote的有用示例之外,您可能还希望在单元测试中自动执行“重定向用户,让他们授予访问权限,重定向回来”循环。我发现有点挑战,所以在这里发布了所有代码:
答案 3 :(得分:0)
在获得Seth's Answer的访问权限时,您需要在生成授权URL时创建的请求令牌。这需要存储在会话对象中。如果直接存储,它将在检索存储的请求令牌时抛出错误。所以你需要将它存储在cache_store中。
为了在rails应用中处理evernote api的请求令牌和访问令牌,您可以按照以下步骤操作:
您需要设置会话cache_store以从Evernote保存您的OAuth令牌。将以下内容添加到config / initializers / session_store.rb的末尾:
Rails.application.config.session_store :cache_store, key: ‘_rails-evernote_session’
通过这种方式,您可以将对象存储在会话中,并且可以在需要时检索它。
有关更多详细信息,请查看以下教程。 - https://codepen.io/asommer70/post/export-evernote-notes-with-rails