You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打印Reddit API返回的JSON响应并解决invalid_grant报错

问题原因

Reddit OAuth2接口的设计特性就是即使授权参数错误,也会返回200状态码,错误信息只会放在返回的JSON体中,你遇到的invalid_grant是授权凭证无效类错误,按以下步骤排查即可解决:

解决步骤

  • 修正密码读取逻辑
    你当前从pw.txt读取密码时没有去除首尾空白,大部分人保存密码文件时会不小心留下末尾换行符,导致传入的密码和实际不一致,另外原代码中pw = f.read()行缺少缩进属于语法错误,修改读取代码为:
with open('pw.txt', 'r') as f:
    pw = f.read().strip()
  • 确认Reddit应用类型
    password授权模式仅支持script类型的Reddit应用,你需要登录Reddit账号进入应用管理页,确认你创建的应用类型是script,不是web app或者installed app。
  • 验证账号凭证正确性
    可以先临时硬编码密码测试,排除文件读取问题:将data中的password字段直接替换为你的Reddit账号明文密码,运行后如果不再报错,说明是密码读取环节的问题。
  • 排查IP问题
    如果使用代理访问Reddit,部分被标记的代理IP会触发授权失败,切换为原生家庭IP重试即可。

修正后完整代码

import requests
from requests.auth import HTTPBasicAuth

SECRET_KEY = '替换为你的实际SECRET_KEY'
CLIENT_ID = 'mb_cSXkFXaFE6Q2QrWmc2w'

# 读取密码并去除首尾空白
with open('pw.txt', 'r') as f:
    pw = f.read().strip()

data = {
    'grant_type': 'password',
    'username': 'brandonbann',
    'password': pw
}
headers = {'User-Agent' : 'MyAPI/0.0.1'}
res = requests.post(
    'https://www.reddit.com/api/v1/access_token',
    auth=HTTPBasicAuth(CLIENT_ID, SECRET_KEY),
    data=data,
    headers=headers
)

# 打印返回的JSON内容
print(res.json())

按以上步骤修正后就能得到你期望的access_token返回结果。

内容的提问来源于stack exchange,提问作者Brandon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:00:01