为何Twitter API返回「需更高访问权限」错误?已购Basic计划仍报错
问题解决:Twitter Basic计划下用V2 API发布带图片的推文线程
问题原因
Twitter Basic订阅的Elevated Access权限不包含V1.1的statuses/update端点(即你调用的client_v1.update_status),错误码453的提示已明确这点,必须改用Twitter API V2完成媒体上传和推文发布。
解决方案
使用V2 API的媒体上传接口替代V1.1,V2支持直接上传媒体并关联到推文,无需依赖受限的V1.1端点。
修改后的代码
def create_thread(message_text, media_paths=None): # 拆分文案为单条280字符的推文 tweets = [message_text[i:i + 280] for i in range(0, len(message_text), 280)] # 处理媒体上传(如果有) media_keys = None if media_paths: media_keys = [] for path in media_paths: # 用V2 API上传媒体,获取media_key media_response = client_v2.upload_media(filename=path) media_keys.append(media_response.media_key) # 发布第一条推文(带媒体或纯文本) if media_keys: response = client_v2.create_tweet(text=tweets[0], media_keys=media_keys) else: response = client_v2.create_tweet(text=tweets[0]) # 发布后续线程推文(回复前一条) for tweet in tweets[1:]: response = client_v2.create_tweet(text=tweet, in_reply_to_tweet_id=response.id) return response
关键修改点
- 替换V1.1的
update_status为V2的create_tweet,用media_keys参数关联上传的媒体 - 用V2的
upload_media接口上传图片,获取media_key(V2不再使用V1的media_id) - 回复线程时,V2的正确参数是
in_reply_to_tweet_id,修正原代码中错误的reply_settings格式
注意事项
- 确保
client_v2已正确配置Basic计划的API密钥和访问令牌 - 上传媒体支持JPG、PNG、GIF等格式,单文件大小需符合Twitter V2 API限制
内容的提问来源于stack exchange,提问作者Leonardo Alonso
相关产品推荐
相关产品推荐

