使用Tweepy调用Twitter API遇403错误,请求解决数据访问问题
问题解决步骤
1. 修正OAuth认证参数顺序
你当前代码里的OAuth参数顺序完全搞反了,这会导致认证逻辑错误,正确的写法是:
- 先用
consumer_key和consumer_secret初始化OAuthHandler - 再调用
set_access_token传入access_token和access_token_secret
修正后的认证代码片段:
consumer_key = "a1" consumer_secret = "b1" access_token = "c1" access_token_secret = "d1" # 修正顺序 authorization = tweepy.OAuthHandler(consumer_key, consumer_secret) authorization.set_access_token(access_token, access_token_secret) api = tweepy.API(authorization)
2. 解决403权限限制问题
错误提示的核心是你当前的开发者账号没有访问v1.1 user_timeline端点的权限,有两种解决路径:
路径一:升级API访问权限
如果坚持用v1.1的user_timeline,需要在Twitter开发者后台升级到对应的产品套餐(比如Basic付费套餐),获取该端点的访问权限。
路径二:改用Twitter API v2端点
免费版账号可以访问v2的users/timelines端点,用Tweepy的v2客户端实现,示例代码如下:
import tweepy consumer_key = "a1" consumer_secret = "b1" access_token = "c1" access_token_secret = "d1" # 初始化v2客户端 client = tweepy.Client( consumer_key=consumer_key, consumer_secret=consumer_secret, access_token=access_token, access_token_secret=access_token_secret ) # 获取@elonmusk的用户ID(v2需要用ID而非用户名直接调用) user = client.get_user(username="elonmusk") user_id = user.data.id # 获取时间线数据 tweets = client.get_users_tweets( id=user_id, max_results=200, exclude="retweets", tweet_fields=["created_at", "text"] ) # 打印结果 for tweet in tweets.data: print(f"{tweet.created_at}: {tweet.text}")
注意:v2返回的数据结构和v1.1不同,需要根据需求调整字段参数。
内容的提问来源于stack exchange,提问作者repo_twei
相关产品推荐
相关产品推荐

