You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Tweepy调用Twitter API V2发推正常但搜索报401未授权求助

解决Tweepy调用search_recent_tweets返回401未授权的问题

可能原因及对应解决方法

1. 确认开发者账号的搜索权限

你能正常发推,但需检查账号是否具备search_recent_tweets的使用权限:

  • 登录Twitter开发者平台,进入项目页面
  • 在「Products & Features」中确认「Twitter API v2」下的搜索功能已激活(Essential Access免费版默认支持该功能,若未激活按提示完成开通)

2. 切换为App-only OAuth认证(Bearer Token)

search_recent_tweets不需要用户上下文,使用应用级的Bearer Token认证可避免用户凭据的权限限制:

  • 在开发者平台「Keys and Tokens」页面复制你的Bearer Token
  • 修改认证代码:
client = tweepy.Client(bearer_token=BEARER_TOKEN)

用这个Client重新调用搜索接口,验证是否正常返回结果。

3. 修正请求参数的合法性

虽然401是认证错误,但参数异常可能触发服务器的权限校验逻辑:

  • search_recent_tweets仅支持搜索最近7天内的推文,你设置的start_time='2022-12-06T05:00:00Z'远超时间范围,需调整为最近7天内的时间戳
  • 可先简化测试:用普通文本query(如'python')替代地理搜索参数,排除参数格式问题的影响

4. 检查Access Token的权限范围

发推仅需write权限,但搜索需要read权限:

  • 若之前生成的Access Token仅包含write权限,需在开发者平台重新生成包含read+write权限的Access Token及Secret

测试代码示例

调整后的最简测试代码(Bearer Token+合法时间范围):

from tweepy import Client

# 用Bearer Token初始化Client
client = Client(bearer_token="你的Bearer Token")

# 测试普通文本搜索,时间设为最近1天
query = 'python'
response = client.search_recent_tweets(query=query, max_results=10, start_time='2024-05-20T05:00:00Z')

# 输出结果
if response.data:
    for tweet in response.data:
        print(tweet.text)
else:
    print("无搜索结果或请求错误:", response.errors)

内容的提问来源于stack exchange,提问作者LaptopProfile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:55:16