如何通过推文ID获取推文JSON?适配Twitter API v2解决403报错
解决Twitter API 403错误获取推文JSON的方法
错误原因
你之前的代码调用的是Twitter API v1.1的get_status接口,但当前账号只有Essential access权限,该权限仅允许使用Twitter API v2的接口,因此触发403 Forbidden错误。
两种解决办法
办法1:申请Elevated access权限(继续用v1.1)
- 登录Twitter开发者平台申请Elevated access,审核通过后就能继续使用原有v1.1的代码逻辑。不过这个方法需要等待审核,且有调用额度限制。
办法2:改用Twitter API v2接口(推荐,无需额外申请)
Essential access默认支持v2的推文获取接口,以下是调整后的代码:
import tweepy import json # 填入你的开发者认证信息 consumer_key = "你的consumer_key" consumer_secret = "你的consumer_secret" access_token = "你的access_token" access_token_secret = "你的access_token_secret" # 创建API v2客户端 client = tweepy.Client( consumer_key=consumer_key, consumer_secret=consumer_secret, access_token=access_token, access_token_secret=access_token_secret ) # 获取指定推文,可按需添加需要返回的字段 response = client.get_tweet( "1654136293041864709", # 可添加更多字段,比如public_metrics(点赞、转发数)、created_at等 tweet_fields=["text", "created_at", "public_metrics"] ) # 提取推文数据并输出/保存 if response.data: # 打印推文的JSON结构 print(response.data.data) # 保存为JSON文件 with open("tweet_details.json", "w", encoding="utf-8") as f: json.dump(response.data.data, f, ensure_ascii=False, indent=4) else: print("未获取到推文数据")
关键说明
- Tweepy的
Client类是专门适配API v2的客户端,替代了原v1.1的API类。 get_tweet方法需要明确指定tweet_fields,默认只返回推文ID和文本,你可以根据需求添加更多字段。- 如果需要获取完整的响应内容(包括可能的扩展数据),可以直接调用
response.json()来获取完整JSON:print(response.json())。
内容的提问来源于stack exchange,提问作者FabioMathu
相关产品推荐
相关产品推荐

