如何使用OAuth将oauth_token&oauth_verifier转换为Access令牌gem
我正尝试使用OAuth gem在我的Ruby on Rails应用程序中对Evernote进行身份验证。我正在使用教程来验证Twitter - http://blog.brijeshshah.com/integrate-twitter-oauth-in-your-rails-application/,因为我找不到Evernote。如何使用OAuth将oauth_token&oauth_verifier转换为Access令牌gem
到目前为止,我已经得到用户授权我的应用程序,现在有临时凭证:
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中处理。谁能帮我吗?
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的一部分。
嘿,我开始走这样的路,我在那里集成Oauth到我的其他应用程序之一。
您应该检查出oauth-plugin on github,因为它为您处理所有业务。
它应该可以帮助你大部分的方式,再加上如果有一个'怪异'的oauth提供者不是“流行”的,它允许你将它添加到配置文件中。这就是我对我的做法。
一个建议是覆盖OauthConsumersController中的所有方法,并根据需要“调整”它们。我知道我必须做到这一点,很容易看到他对他的插件做了什么,并从那里调整。地狱,也许他甚至有一条路径,你可以在他的代码中遵循你的确切问题,你不需要他所有的插件(因为他也使用oauth宝石)。
感谢您的回答。我想使用OAuth gem,因为我不想生成OauthConsumersController和额外的东西,因为我使用OmniAuth,并且我只想手动将Evernote Access令牌手动存储在现有模型中,所以我已经有一个用于身份验证的模型。 – ben 2011-02-15 06:37:49
除了来自Evernote的有用示例之外,您还可能希望在单元测试中自动执行“重定向用户,让他们授予访问权限,重定向回来”循环。我发现一个有点挑战性,所以已经发布的所有代码,这样的位置:
同时获得了由Seth的回答的accessToken,你需要你已经同时生成授权URL创建的请求令牌。这需要存储在会话对象中。如果直接存储,它将在检索存储的请求令牌时抛出错误。所以你需要将它存储在cache_store中。
为了处理请求令牌和访问令牌Evernote的API在你的Rails应用程序,你可以按照下面的步骤:
你需要设置一个会话cache_store从Evernote的保存您的OAuth令牌。以下内容添加到配置/初始化/ session_store.rb结束:
Rails.application.config.session_store :cache_store, key: ‘_rails-evernote_session’
通过这种方式,您可以存储在会话中的对象并在需要时可以恢复。
有关更多详细信息,可以查看以下教程。 - https://codepen.io/asommer70/post/export-evernote-notes-with-rails
如何在回调中获得@request_token?你在会话中存储对象,还是以某种方式重新创建对象? – alltom 2012-01-24 15:02:07