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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:44:56