2014-05-09 3 views
1

내 레일 앱 사용자에게 GetPocket (http://getpocket.com)을 OAuth로 설정하려고합니다.getpocket API에 대한 패러데이드 POST 요청

포켓 인증 문서 (http://getpocket.com/developer/docs/authentication)의 2 단계에서 정확한 패러데이 요청을 작성하는 데 문제가 있습니다.

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를받을 수 있나요을 결과를 JSON으로 반환하도록 Pocket API에 요청 하시겠습니까?

답변

1

1-liner의 경우 아래에서 JSON으로 반환 해 보았습니다. Content-Type 대신 응답 형식의 키 헤더는 X-Accept입니다. 내가 IRB에 시도 할 때

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

응답은 JSON입니다.

두 번째 코드 섹션의 경우 '/'에서 POST를 수행하면 getpocket.com 인 루트 도메인의 POST 만 수행하므로 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' })

희망.

+0

희망이 있었으면 좋겠습니까? –