购买X Basic订阅仍遇Twitter API 403错误,求技术排查
解决X Basic套餐下Twitter API 403 Forbidden 453错误
核心问题分析
你的代码依赖Twitter API v1.1(tweepy.API),但X Basic套餐对v1.1的部分旧端点已做限制,尤其是search/tweets这类接口,即使付费也无法访问。X当前主推API V2,大部分功能需迁移到V2接口实现。
解决步骤
1. 确认开发者平台权限配置
- 登录X Developer Portal,进入你的项目,确认已绑定X Basic套餐。
- 检查项目权限设置,确保启用了至少Read权限(针对V2接口)。
- 验证凭证(Consumer Key/Secret、Access Token/Secret、Bearer Token)属于该绑定套餐的项目。
2. 迁移代码到Twitter API V2
替换原有的v1.1调用为Tweepy的V2客户端(tweepy.Client),以下是关键部分修改:
初始化V2客户端
import tweepy import threading import time import re from telegram import Update, ChatPermissions from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, ConversationHandler, CallbackContext import logging # Twitter API V2 credentials BEARER_TOKEN = '你的Bearer Token' CONSUMER_KEY = 'API' CONSUMER_SECRET = 'API' ACCESS_TOKEN = 'API' ACCESS_TOKEN_SECRET = 'API' # 初始化V2客户端 twitter_client = tweepy.Client( bearer_token=BEARER_TOKEN, consumer_key=CONSUMER_KEY, consumer_secret=CONSUMER_SECRET, access_token=ACCESS_TOKEN, access_token_secret=ACCESS_TOKEN_SECRET ) # 其余日志、Telegram Token等配置保留原代码
获取推文点赞、转发数据(替代get_tweet_metrics)
def get_tweet_metrics(tweet_id): try: # 通过V2端点获取推文公共指标 tweet = twitter_client.get_tweet( tweet_id, tweet_fields=['public_metrics'] ) if tweet.data: retweets = tweet.data.public_metrics['retweet_count'] likes = tweet.data.public_metrics['like_count'] return retweets, likes return 0, 0 except Exception as e: logger.error(f"获取推文数据失败: {e}") return 0, 0
获取回复数(替代get_replies_count)
def get_replies_count(tweet_id): replies_count = 0 try: # 使用V2的`tweet_replies`端点直接获取所有回复 for page in tweepy.Paginator( twitter_client.get_tweet_replies, tweet_id, max_results=100 ): if page.data: replies_count += len(page.data) except Exception as e: logger.error(f"获取回复数失败: {e}") return replies_count
3. 调整关联代码
- 修改
monitor_twitter_post中的get_replies_count调用,移除twitter_api参数。 - 删除所有原v1.1相关的调用(如
twitter_api.get_status),确保逻辑完全基于V2接口。
额外注意事项
- X Basic套餐有明确的API速率限制,V2端点的限制规则比v1.1更清晰,建议在代码中添加间隔等待(如原代码的
time.sleep(3600))避免触发限制。 - 若仍遇权限问题,可在X Developer Portal的"Projects & Apps"中检查具体端点权限,或联系X支持确认套餐权限范围。
内容的提问来源于stack exchange,提问作者Oscar
相关产品推荐
相关产品推荐

