我正在通过使用 Pocket API 构建 Rails 应用程序来测试 RoR,并且我必须授权用户。对于 HTTP 请求,我使用 https://github.com/rest-client/rest-client图书馆。
第一步,获取请求 token 工作正常:
require 'rest_client'
response = RestClient.post 'https://getpocket.com/v3/oauth/request', :consumer_key => @consumer_key, :redirect_uri => @redirect_uri
@code = response.split("=")[1]
但我在第二步收到错误请求错误,即使用在上述步骤中收到的请求 token 获取访问 token :
access_token = RestClient.post 'https://getpocket.com/v3/oauth/authorize', :consumer_key => @consumer_key, :code => @code
400 Bad Request 是我在 Ruby 应用程序错误屏幕上看到的。我也用 cURL 和 POSTMan Chrome 扩展程序尝试了相同的请求,然后我得到的状态代码是:403 Forbidden。我得到的 X 错误代码是 158,它转换为 X 错误消息“用户拒绝代码”。在 Pocket API 文档上:http://getpocket.com/developer/docs/authentication .
由于我尝试了几个不同的 channel 来测试这个请求并且每次都失败了,我猜测问题不在于解析,而是我可能遗漏了一个重要的细节或步骤(也许是 HTTP 请求 header ?)。提前感谢您的帮助!
最佳答案
事实证明,我(或我们)遗漏了一个重要的细节:
每当在 POSTMan 或其他任何地方测试您对 Pocket API 的请求时,我们自然会跳过访问以下形式的授权 URL 的过程:
https://getpocket.com/auth/authorize?request_token=YOUR_REQUEST_TOKEN&redirect_uri=YOUR_REDIRECT_URI
现在,即使您之前可能允许您的应用访问您的帐户,在每次调用时,Pocket API 不会在访问此 URL 之前激活请求 token 。只有这样您的请求 token 才会被激活并可用于第二个身份验证步骤。这样做后它工作正常。
对于在 Ruby on Rails 中使用 Pocket API 的任何人来说,有一个很好的包装 gem:https://github.com/turadg/pocket-ruby
关于ruby-on-rails - Pocket API 授权 : Forbidden,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27636000/