J. *_*Doe 5 python api curl pocket
我正在尝试调用此行:
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\"}"
Run Code Online (Sandbox Code Playgroud)
每次我得到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
Run Code Online (Sandbox Code Playgroud)
上面的代码给了我一个代码:
usr_params = {'consumer_key': 'key_here', 'code': 'code_here'}
usr = requests.post('https://getpocket.com/v3/oauth/authorize', data=usr_params)
usr.content
Run Code Online (Sandbox Code Playgroud)
我403
也来了。
我该如何解决?
从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
Run Code Online (Sandbox Code Playgroud)
然后第 2 步是授权此请求令牌(这是您缺少的步骤)。在浏览器上使用您从上一步获得的请求令牌打开以下 URL:
https://getpocket.com/auth/authorize?request_token=XXXXXXXX-XXXX-XXXX-XXXX-XXXX&redirect_uri=AppTest:authorizationFinished
Run Code Online (Sandbox Code Playgroud)
点击“授权”:
请求令牌获得授权后,您可以调用您的请求以https://getpocket.com/v3/oauth/authorize
将请求令牌转换为 Pocket 访问令牌:
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
Run Code Online (Sandbox Code Playgroud)
消费者密钥是您在 Pocket 上创建应用程序时获得的密钥,请求令牌是从 v3/oauth/request
端点生成的密钥
然后你会得到预期的结果:
{ "access_token":"5678defg-5678-defg-5678-defg56", "username":"pocketuser" }
Run Code Online (Sandbox Code Playgroud)