请求Reddit API获取OAuth访问令牌时遭遇400 Bad Request错误
Reddit API OAuth令牌400错误排查思路
- 检查授权码(code)有效性:授权码为一次性使用,用过即失效,不可重复提交;同时确认code是从Reddit授权回调中完整获取的,无截断、多余空格或字符错误。
- 确保redirect_uri完全匹配:请求中的
redirect_uri必须和Reddit开发者控制台中配置的地址完全一致,包括末尾斜杠、协议(http/https)、大小写,任何细微差异都会触发400错误。 - 修正User-Agent格式:Reddit对User-Agent有强制格式要求,不能仅用简单字符串,需遵循
平台:应用标识:版本号 (by /u/你的Reddit用户名)格式,例如python:reddit_text_scraper:v1.0 (by /u/rishi_valaparla)。 - 尝试更换请求端点:将请求URL从
https://www.reddit.com/api/v1/access_token替换为官方推荐的OAuth专用端点https://oauth.reddit.com/api/v1/access_token。 - 添加Content-Type头:在请求headers中明确指定
Content-Type: application/x-www-form-urlencoded,确保请求数据编码符合Reddit API要求。 - 再次核对Client ID与Secret:确认Client ID是开发者控制台中「personal use script」对应的短字符串ID,Secret是匹配的密钥,无输入错误或空格。
调整后的测试代码示例
import requests data = { 'grant_type': 'authorization_code', 'code': '你的有效授权码', 'redirect_uri': '与控制台完全一致的回调地址' } headers = { 'User-Agent': 'python:reddit_text_scraper:v1.0 (by /u/你的Reddit用户名)', 'Content-Type': 'application/x-www-form-urlencoded' } r = requests.post( 'https://oauth.reddit.com/api/v1/access_token', data=data, auth=('你的Client ID', '你的Client Secret'), headers=headers ) print(r.text)
内容的提问来源于stack exchange,提问作者rishi valaparla
相关产品推荐
相关产品推荐

