使用Python调用Twitter API时出现HTTP Error 405错误如何解决
问题原因
- 核心兼容问题:你使用的
search-tweets-python工具库是针对Twitter API v1.1版本的付费/企业级搜索接口开发的,完全不支持API v2版本的接口。你当前配置的端点https://api.twitter.com/2/tweets/search/recent属于v2接口,库默认发送的请求方法、参数格式都不符合v2接口要求,因此返回405状态码(该状态码是通用HTTP错误码,代表当前请求的方法不被目标接口支持)。 - 代码参数错误:你在初始化
ResultStream时错误将extra_headers_dict赋值给了username参数,不过该错误不是本次405报错的核心原因。
解决方案
方案1:继续使用v2近期搜索接口(推荐,无需额外申请权限)
直接用requests库调用v2接口即可,参考代码如下:
import requests # 替换为你自己的bearer token BEARER_TOKEN = "你的bearer token" SEARCH_ENDPOINT = "https://api.twitter.com/2/tweets/search/recent" def bearer_auth(r): r.headers["Authorization"] = f"Bearer {BEARER_TOKEN}" r.headers["User-Agent"] = "v2RecentSearchPython" return r # 可根据需求调整查询参数 params = { "query": "twitterdev", "max_results": 100, # 可选参数,指定需要返回的推文字段,不填只返回默认的id和text "tweet.fields": "created_at,public_metrics,author_id" } resp = requests.get(SEARCH_ENDPOINT, auth=bearer_auth, params=params) resp.raise_for_status() tweets_data = resp.json() print(tweets_data)
方案2:继续使用现有search-tweets-python库
- 先在Twitter开发者后台申请开通API v1.1的高级搜索权限
- 将配置文件中的端点替换为v1.1版本的premium搜索端点
- 修正代码中的参数错误,删除
ResultStream初始化时的username参数(使用bearer token认证不需要传该参数)
内容的提问来源于stack exchange,提问作者tostuo tostuo
相关产品推荐
相关产品推荐

