使用Tweepy v2访问Twitter时间线时遭遇403 Forbidden错误求助
解决Tweepy v2调用get_home_timeline()时的403 Forbidden错误
核心问题与解决方案
你的代码误用了认证方式,get_home_timeline()属于需要用户上下文权限的接口,不能用Bearer Token初始化Client,以下是具体修正步骤:
1. 修正Client的认证逻辑
直接用OAuth1的用户密钥/令牌初始化Client,去掉Bearer Token(它仅适用于应用上下文的公开数据接口):
import tweepy import keys_test as keys # 仅用OAuth1用户认证信息初始化Client client = tweepy.Client( consumer_key=keys.api_key, consumer_secret=keys.api_secret, access_token=keys.access_token, access_token_secret=keys.access_token_secret ) # 调用接口并正确获取返回数据 response = client.get_home_timeline() # 从Response对象的data属性中提取推文列表 if response.data: for tweet in response.data: print(tweet.text)
注意:原代码中直接遍历status是错误的,get_home_timeline()返回的是tweepy.Response对象,需要通过.data获取实际推文数据。
2. 确认应用权限并刷新令牌
即便应用已关联项目,仍需检查权限设置:
- 登录Twitter开发者门户,进入你的应用页面
- 在「Permissions and features」中,确保开启了至少Read级别的用户权限(若需要写操作可选
Read and write) - 权限变更后,必须到「Keys and tokens」页面重新生成Access Token and Secret——旧令牌不会自动同步新权限
3. 清理冗余代码
如果仅使用Twitter API v2接口,无需创建tweepy.API(这是v1.1的对象),避免混淆认证逻辑。
错误原因说明
错误提示里的“需使用关联项目的应用密钥”你已经满足,但Bearer Token是应用级认证,只能访问公开数据;而主页时间线属于用户私有数据,必须用OAuth1.0a的用户上下文认证才能访问。
内容的提问来源于stack exchange,提问作者Web Inar
相关产品推荐
相关产品推荐

