1

下面的 Python 脚本应该授权我使用我的 Pocket 应用程序来检索文档。我正在从 Jupyter 笔记本运行它。

import json
import pandas as pd
import requests
from urllib.parse import urlencode
from urllib.request import Request, urlopen

app_key = '<app key>'

request_token_url = 'https://getpocket.com/v3/oauth/request'

auth_params = {'consumer_key': app_key,
               'redirect_uri': redirect_url}

oauth = requests.post(request_token_url, data=auth_params)

token = oauth.text; print(token)

<........-....-....-....-......>

auth_url = 'https://getpocket.com/v3/oauth/authorize'
redirect_uri = '<jekyll-based static blog on github>'

usr_params = {'request_token': token, 'redirect_uri': redirect_uri}

usr = requests.post(auth_url, json = usr_params)

print(usr.text)

我一直收到状态码 400,但无法检测到错误来自何处。谢谢。

4

1 回答 1

0

首先,将标头添加到您的第一个 POST 请求以获取 JSON 形式的响应:

headers={'X-Accept': 'application/json'}
oauth = requests.post(request_token_url, data=auth_params, headers=headers)
token = oauth.json()["code"]

在您的第二个 POST 请求之前,您需要转到 Web 浏览器并手动验证您的应用程序。这不是您的脚本可以自动处理的。要获取 URL,您可以执行以下操作:

auth_url = 'https://getpocket.com/auth/authorize'
print(f"{auth_url}?request_token={token}&redirect_uri={redirect_uri}")

在浏览器中转到此 URL,对您的应用进行身份验证。然后您可以使用以下内容获取访问令牌,您可以在后续的 Pocket API 调用中使用该令牌:

access_token_url = 'https://getpocket.com/v3/oauth/authorize'
params = {
    'consumer_key': app_key,
    'code': token,
}
headers={'X-Accept': 'application/json'}
response = requests.post(access_token_url, params=params, headers=headers)
access_token = response.json()['access_token']

最后一点,您可以使用 Pocket API python 包装器 ( https://github.com/tapanpandita/pocket ) 稍微简化整个过程。

于 2021-11-28T04:48:23.703 回答