【问题标题】:Why Pocket API returns 403 Forbidden always?为什么 Pocket API 总是返回 403 Forbidden?
【发布时间】:2017-05-15 16:41:00
【问题描述】:

我正在尝试拨打此行:

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

我该如何解决这个问题?

【问题讨论】:

标签: python api curl pocket


【解决方案1】:

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步就是授权这个请求令牌(这是你缺少的步骤)。在浏览器上,使用您从上一步获得的请求令牌打开以下 URL:

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

点击“授权”:

请求令牌获得授权后,您可以在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

消费者密钥是您在 Pocket 上创建应用程序时获得的密钥,请求令牌是从 v3/oauth/request 端点生成的密钥

然后你得到预期的结果:

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

【讨论】:

  • 很好解释的答案,这为我节省了很多时间。
猜你喜欢
  • 1970-01-01
  • 2023-02-24
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
相关资源
最近更新 更多