Emi*_*mir 3 ruby-on-rails oauth httprequest rest-client pocket
我正在通过使用Pocket API构建Rails应用程序来测试RoR,我必须授权用户.对于HTTP请求,我使用的是https://github.com/rest-client/rest-client库.
第一步,获取请求令牌工作正常:
require 'rest_client'
response = RestClient.post 'https://getpocket.com/v3/oauth/request', :consumer_key => @consumer_key, :redirect_uri => @redirect_uri
@code = response.split("=")[1]
Run Code Online (Sandbox Code Playgroud)
但是我在第二步遇到错误请求错误,即使用上面步骤中收到的请求令牌获取访问令牌:
access_token = RestClient.post 'https://getpocket.com/v3/oauth/authorize', :consumer_key => @consumer_key, :code => @code
Run Code Online (Sandbox Code Playgroud)
400错误请求是我在Ruby应用程序错误屏幕上得到的.我也尝试过使用cURL和POSTMan Chrome扩展程序的相同请求,我得到的状态代码是:403 Forbidden.我得到的X-Error Code是158,它转换为X-Error消息"User rejects code".在Pocket API文档上:http://getpocket.com/developer/docs/authentication.
由于我已经尝试了几个不同的通道来测试这个请求并且每次都失败了,我猜测问题不在于解析,而是我可能缺少重要的细节或步骤(可能是HTTP请求头?).感谢您的帮助!
事实证明我(或我们)错过了一个重要的细节:
每当在POSTMan或其他任何地方测试您对Pocket API的请求时,我们自然会跳过访问授权URL的过程,其形式为:
https://getpocket.com/auth/authorize?request_token=YOUR_REQUEST_TOKEN&redirect_uri=YOUR_REDIRECT_URI
Run Code Online (Sandbox Code Playgroud)
现在,即使您可能已经允许您的应用访问您的帐户,但在每次调用之前,Pocket API都不会在访问此URL之前激活请求令牌.只有这样,您的请求令牌才会被激活,并可用于第二个身份验证步骤.这样做之后工作正常.
作为在Ruby on Rails中使用Pocket API的任何人的旁注,有一个很好的包装宝石:https://github.com/turadg/pocket-ruby
归档时间: |
|
查看次数: |
1277 次 |
最近记录: |