2016-12-31 69 views
1

我试图把这个行:为什么Pocket API总是返回403 Forbidden?

curl https://getpocket.com/v3/oauth/authorize --insecure -X POST -H "Content-Type: application/json" -H "X-Accept: application/json" -d "{\"consumer_key\":\"61999-492f79db0bd3292f0b4...1\",\"code\":\"c9166709-0c45-2b1f-a22f-e...r\"}" 

,每次我得到403 Forbidden

我不知道并理解这个原因。

有谁知道吗?我试了一下通过Python的太:

import requests 

auth_params = {'consumer_key': 'key_here', 'redirect_uri': 'https://www.twitter.com/'} 

tkn = requests.post('https://getpocket.com/v3/oauth/request', data=auth_params) 

tkn.content 

上面的代码给了我一个代码:

usr_params = {'consumer_key': 'key_here', 'code': 'code_here'} 
usr = requests.post('https://getpocket.com/v3/oauth/authorize', data=usr_params) 
usr.content 

在这里我得到403了。

我该如何解决这个问题?

+0

卷发器:https://shibukawa.github.io/curl_as_dsl/index .html和http://curl.trillworks.com/ – furas

回答

2

Pocket Authentication API Documentation,你需要注册一个应用,从而获得消费者的钥匙,然后通过请求OAuth令牌:

curl -X POST \ 
    -H 'Content-Type: application/json' \ 
    -d '{"consumer_key":"XXXXX-XXXXXXXXXXXXXXXXXXXXXX","redirect_uri":"AppTest:authorizationFinished"}' \ 
    https://getpocket.com/v3/oauth/request 

然后第2步是授权该请求令牌(这是你缺少步骤)。在浏览器中打开以下网址与您从上一步骤得到了请求令牌:

https://getpocket.com/auth/authorize?request_token=XXXXXXXX-XXXX-XXXX-XXXX-XXXX&redirect_uri=AppTest:authorizationFinished 

点击“授权”:

enter image description here

一旦请求令牌授权,你可以调用你对https://getpocket.com/v3/oauth/authorize请求,请求令牌转换成一个袖珍的访问令牌:

curl -X POST \ 
    -H 'Content-Type: application/json' \ 
    -d '{"consumer_key":"XXXXX-XXXXXXXXXXXXXXXXXXX","code":"XXXXXXXXX-XXXX-XXXX-XXXX-XXXXX"}' \ 
    https://getpocket.com/v3/oauth/authorize 

消费者关键是你去了一个令牌从v3/oauth/request端点

然后生成的,当你创建了口袋里的应用程序和要求T中的一个,你得到预期:

{ "access_token":"5678defg-5678-defg-5678-defg56", "username":"pocketuser" }