法拉第POST请求getpocket API

时间:2014-05-09 01:59:31

标签: http faraday pocket

我正在尝试为我的Rails应用的用户设置OAuth到GetPocket(http://getpocket.com)。

在Pocket Authentication文档的第2步(http://getpocket.com/developer/docs/authentication)上,我无法构建完整的法拉第请求。

以下请求有效:

Faraday.post('https://getpocket.com/v3/oauth/request', {consumer_key: 'key', redirect_uri: 'localhost:3000'})

但我希望响应是JSON。我希望能够在请求中添加“Content-Type”:“application / json”标题,但我的所有尝试似乎都不起作用。

有趣的是,当我执行以下操作时,请求失败(它返回200但不返回请求令牌,只返回整个HTML页面):

conn = Faraday.new('https://getpocket.com/v3/oauth/request')
conn.post('/', {consumer_key: 'key', redirect_uri: 'localhost:3000'})

如何将我的法拉第POST请求发送到Pocket API以返回JSON结果?

1 个答案:

答案 0 :(得分:2)

对于1-liner,我尝试了以下,以JSON方式返回。响应格式的关键标题为X-Accept,而不是Content-Type

Faraday.post 'https://getpocket.com/v3/oauth/request', { 'consumer_key' => 'key', 'redirect_uri' => 'localhost:3000'}, { 'X-Accept' => 'application/json' }

当我在IRB中尝试时,响应是JSON。

对于第二个代码部分,我相信当您在'/'处进行POST时,它只在根域进行POST,即getpocket.com,从而返回getpocket的HTTP 200和整个HTML页面。 com登录页面。从输出中,有一部分表明了这一点(见下文)

...snip... :url=>#<URI::HTTPS:0x000000028ab900 URL:https://getpocket.com/>, :request_headers=>{"User-Agent"=>"Faraday v0.8.9", "Content-Type"=>"application/x-www-form-urlencoded"}, ...snip..

无论如何,你可以尝试以下在IRB中测试时适合我。

conn = Faraday.new('https://getpocket.com') conn.post('/v3/oauth/request', {consumer_key: 'key', redirect_uri: 'localhost:3000'}, { 'X-Accept' => 'application/json' })

希望这会有所帮助。