Python Tweepy调用Twitter API遇401未授权错误求助
解决Twitter API 401未授权错误的方案
你的代码核心错误
当前认证代码存在两个直接导致401错误的问题:
- OAuthHandler参数错误:你传入的是字符串
"API_key"和"API_secret",而非读取到的变量api_key和api_secret - set_access_token使用错误:这是一个方法,你写成了赋值语句
auth.set_access_token = (...),正确用法是调用方法auth.set_access_token(...)
修正后的OAuth1.0a认证代码(用于API v1.1)
import tweepy import configparser import os # 读取配置文件 file_name = "config.txt" file_path = os.path.join(os.getcwd(), file_name) config = configparser.ConfigParser() config.read(file_path) # 读取密钥(确保config.txt格式正确) api_key = config["twitter"]["API_key"] api_secret = config["twitter"]["API_secret"] access_token = config["twitter"]["Access_token"] access_token_secret = config["twitter"]["Access_token_secret"] # 正确的认证流程 auth = tweepy.OAuthHandler(api_key, api_secret) # 传入变量而非字符串 auth.set_access_token(access_token, access_token_secret) # 调用方法而非赋值 api = tweepy.API(auth) # 验证认证是否成功 try: public_tweets = api.home_timeline() print("认证成功!获取到时间线内容:") for tweet in public_tweets[:3]: print(tweet.text) except tweepy.errors.Unauthorized: print("仍未授权,请检查密钥是否正确,或账号权限是否开启")
学术账号推荐使用Bearer Token(API v2)
你的目标是拉取历史话题标签,Twitter学术研究账号更适配API v2的全量搜索接口,此时需用Bearer Token进行App-only认证,无需用户授权令牌:
步骤1:确保config.txt格式正确
你的配置文件需包含Bearer Token,格式如下:
[twitter] API_key=你的API密钥 API_secret=你的API密钥 Bearer_token=你的学术账号专属Bearer令牌
步骤2:使用Tweepy Client完成认证与数据拉取
import tweepy import configparser import os # 读取配置文件 file_name = "config.txt" file_path = os.path.join(os.getcwd(), file_name) config = configparser.ConfigParser() config.read(file_path) bearer_token = config["twitter"]["Bearer_token"] # 初始化API v2 Client client = tweepy.Client(bearer_token=bearer_token) # 测试拉取指定话题标签的推文(学术账号支持回溯更久的历史数据) try: # 搜索含#Python的推文,最多返回10条 response = client.search_recent_tweets(query="#Python", max_results=10) if response.data: print("认证成功!获取到话题标签推文:") for tweet in response.data: print(tweet.text) else: print("未搜索到相关推文,但认证已通过") except tweepy.errors.Unauthorized: print("Bearer Token无效,请检查是否从学术账号后台正确生成")
额外检查项
- 确认所有密钥/令牌均从Twitter开发者平台的学术研究项目生成,普通项目权限不足
- 检查config.txt中的密钥名称是否拼写正确(比如大小写、空格)
- 确保开发者平台中的项目状态为"活跃",账号无限制
内容的提问来源于stack exchange,提问作者IDK
相关产品推荐
相关产品推荐

