运行tweepy开发的Twitter机器人出现tweepy.errors.Forbidden:403 Forbidden错误如何解决
tweepy调用报403 Forbidden错误原因及解决方案
错误原因
- 令牌权限不足:你在X(原Twitter)开发者平台生成的Access Token默认是只读权限,未开启读写权限,无法执行发送推文的操作
- 使用了不兼容的API版本接口:代码中调用的
api.update_status属于API v1.1的接口,当前X平台的免费开发者套餐已不支持v1.1的发推权限,只有付费套餐可使用v1.1的写接口 - 触发平台反垃圾规则:短时间内重复发送完全相同的推文、内容包含违规信息,被平台反垃圾系统拦截
- 账号状态异常:开发者账号未通过审核、被平台限制功能,或使用的密钥属于其他权限不足的账号
解决方案
- 检查并修改令牌权限:登录X开发者平台,进入对应项目的用户认证设置页,将权限调整为Read and write,修改后重新生成Access Token和Access Token Secret,替换代码中的旧密钥
- 适配免费可用的API v2接口:Tweepy 4.0及以上版本支持API v2,将代码替换为以下内容即可在免费套餐下实现发推功能:
import tweepy print("This is a twitter Bot") apiKey="XXXXXXXXXXXXXXXXXXX" apiKeySecret="YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY" accessToken="1111111111111111111111111111111111111" accessTokenSecret="222222222222222222222222222222222222" client = tweepy.Client( consumer_key=apiKey, consumer_secret=apiKeySecret, access_token=accessToken, access_token_secret=accessTokenSecret ) response = client.create_tweet(text='Twitter Bot In Action') print(f"推文发送成功,ID:{response.data['id']}")
- 若必须使用API v1.1的接口,登录X开发者平台将套餐升级到基础付费层,确认开通v1.1写权限
- 测试时每次使用不同的推文内容,避免发送违规信息触发反垃圾拦截
- 核对所有密钥和开发者平台生成的内容完全一致,检查开发者账号通知中心确认账号无功能限制
内容的提问来源于stack exchange,提问作者jakeisgoodcoder
相关产品推荐
相关产品推荐

