使用Tweepy调用Twitter V2 API的get_me()时expansions参数报错
解决Tweepy调用get_me()时expansions参数报错的问题
问题根因
你搞混了Twitter V2 API不同端点的expansions参数支持范围。get_me()对应API的/users/me端点,这个接口只认pinned_tweet_id作为expansions参数值——author_id是给推文相关接口(比如搜索推文、获取单条推文)用的扩展参数,用来拉取推文作者的信息,根本不适用于用户信息查询接口。
修正代码
如果只是要拿当前授权用户的username、created_at、location这些基础信息,完全不需要加expansions,直接指定user_fields就行:
client = tweepy.Client( consumer_key=private.API_KEY, consumer_secret=private.API_KEY_SECRET, access_token=access_token, access_token_secret=access_token_secret) # 去掉无效的expansions参数,直接获取指定用户字段 user = client.get_me(user_fields=['username','created_at','location']) print(user.data) # 直接打印用户核心数据 return('success')
要是需要获取用户的置顶推文,才需要用expansions='pinned_tweet_id',同时可以加tweet_fields来拿到推文的具体内容:
user = client.get_me(expansions='pinned_tweet_id', tweet_fields=['text','created_at']) # 用户信息在user.data里,置顶推文在user.includes['tweets']集合中 print("用户信息:", user.data) print("置顶推文:", user.includes['tweets'])
补充说明
- Tweepy的方法参数完全对齐Twitter官方API的要求,以后遇到参数报错,先核对对应接口的官方参数列表,别把不同接口的参数混用。
- 没必要放弃Tweepy,它已经帮你搞定了3-legged认证这些复杂流程,比自己写请求靠谱多了,只是要注意不同接口的参数差异。
内容的提问来源于stack exchange,提问作者userBrett97
相关产品推荐
相关产品推荐

