如何授权Tweepy发布Twitter内容?验证通过仍报401未授权错误
你遇到的验证通过但发推失败的核心原因是:api.verify_credentials() 仅需要应用具备读取权限即可调用成功,而发布推文要求应用具备写入权限,且当前Twitter/X API的免费层级已不再支持v1.1版本的发推接口。
解决步骤
1. 调整应用权限配置
登录Twitter开发者后台,进入对应应用的设置页面:
- 找到「权限设置」板块,将应用的访问权限从默认的「只读」修改为「读和写」,如果需要其他功能可以选择更高权限等级
- 确认你使用的API层级支持发推操作,当前免费版API仅支持v2版本的发推接口,v1.1的发推接口仅对付费用户开放
2. 重新生成访问凭证
权限修改完成后,必须重新生成Consumer Key、Consumer Secret、Access Token、Access Token Secret四类凭证,旧凭证会保留修改前的权限配置,不会自动更新。将新生成的凭证替换到你的代码中。
3. (推荐)切换到Twitter API v2接口
如果使用免费层级API,直接用v2版本的接口发推,示例代码如下:
import tweepy def main(): consumer_key = '你的新consumer_key' consumer_secret = '你的新consumer_secret' access_token = '你的新access_token' access_token_secret = '你的新access_token_secret' # 初始化v2客户端 client = tweepy.Client( consumer_key=consumer_key, consumer_secret=consumer_secret, access_token=access_token, access_token_secret=access_token_secret ) # 发推 status = "Another day, another cup of #coffee" response = client.create_tweet(text=status) print(f"推文发布成功,ID:{response.data['id']}") if __name__ == "__main__": main()
其他排查点
- 检查本地系统时间是否准确,OAuth1.0a认证依赖时间戳,本地时间和标准时间差超过5分钟会触发401报错
- 确认复制凭证时没有多余的空格、换行符等无效字符
内容的提问来源于stack exchange,提问作者ARNON
相关产品推荐
相关产品推荐

