使用tweepy Paginator调用get_retweeters报401 Unauthorized如何解决
401为鉴权类错误,针对拉取推文转发用户的场景,按以下优先级排查即可:
- 确认API权限等级匹配
Twitter API v2的get_retweeters接口未对免费层开发者开放,免费账号调用会直接返回401。需要先确认你的开发者账号订阅了Basic及以上的API套餐,且当前调用使用的App已经绑定在对应有权限的开发者项目下。 - 校验Client初始化的鉴权参数
该接口不支持仅使用Bearer Token的应用鉴权,必须配置完整的OAuth 1.0a用户上下文凭证,缺项、参数值填错、复制时带多余空格都会触发401。正确初始化参考:import tweepy client = tweepy.Client( consumer_key="从开发者后台复制的API Key", consumer_secret="从开发者后台复制的API Key Secret", access_token="从开发者后台复制的Access Token", access_token_secret="从开发者后台复制的Access Token Secret", bearer_token="从开发者后台复制的Bearer Token", wait_on_rate_limit=True ) - 校验目标推文的可访问性
如果传入的推文ID对应内容已被删除、发布账号设为私密、推文被平台限制可见,即使鉴权参数正确也会返回401。测试阶段可以先用一个公开可访问的普通推文ID做调用验证,排除目标资源本身的访问限制问题。 - 校验运行环境时间同步
Twitter的OAuth签名校验会校验请求时间,如果运行代码的设备本地时间和标准UTC时间偏差超过5分钟,签名校验会直接失败返回401。本地运行先同步系统时间,服务器部署配置NTP时间同步即可修复。
你写的分页拉取逻辑本身没有语法问题,鉴权和权限问题修复后即可正常拉取数据。调试阶段可以加异常捕获打印详细响应信息,方便快速定位问题:
try: for user in tweepy.Paginator(client.get_retweeters, id=df2['Tweet Id'][0], max_results=100).flatten(limit=1000): print(user) except tweepy.TweepyException as e: print(f"错误信息: {str(e)}") if hasattr(e, 'response'): print(f"错误详情: {e.response.text}")
内容的提问来源于stack exchange,提问作者Sammy
相关产品推荐
相关产品推荐

