【发布时间】:2020-11-07 03:48:54
【问题描述】:
我确信这是一个更广泛的问题,不仅适用于 Reddit,但目前我正在尝试交换用户访问令牌的代码,但我不了解如何实施以下步骤:
https://github.com/reddit-archive/reddit/wiki/OAuth2#retrieving-the-access-token
如果您没有收到错误并且状态值已检出, 然后,您可以使用代码向以下 URL 发出 POST 请求以检索您的访问令牌:
https://www.reddit.com/api/v1/access_token
在您的 POST 数据中包含以下信息(不作为 URL 的一部分)
grant_type=authorization_code&code=CODE&redirect_uri=URI
好的,所以我做的是这样的:
headers = {
CLIENT_ID: CLIENT_SECRET,
}
r = requests.post(
url="https://www.reddit.com/api/v1/access_token",
data={
"grant_type": "authorization_code",
"code": code,
"redirect_uri": "http://127.0.0.1:5000/callback"
},
headers=headers
)
我认为我在标头方面失败了,我收到 429 错误,并且我认为我不明白如何正确排列标头,因为它在上面的链接中没有清楚地解释。
“用户”是client_id。机密客户端的“密码”是 client_secret。非机密客户端(已安装的应用程序)的“密码”是一个空字符串。
CLIENT_ID 和 CLIENT_SECRET 显然是变量,它们是我的 Reddit 应用开发凭据。
编辑:
我想出了这个,它很恶心,但它似乎有效
headers = {
"User-Agent": "MyApp v1.0",
"Authorization": "Basic " + str(base64.b64encode(str.encode(f"{CLIENT_ID}:{CLIENT_SECRET}")))[2:-1],
}
有没有更简洁的写法?
【问题讨论】:
-
所以我搜索了 429 错误,这是一个
Too many requests错误。所以我在标题中添加了 User-Agent,现在我收到了 401 错误。