453 - 您目前只能访问 Twitter API v2 端点的子集和有限的 v1.1 端点(例如媒体发布、oauth)

问题描述 投票:0回答:1

有谁支付了基本层 Twitter API 的费用,解决了上面标题中的“403 Forbidden”错误吗?这是我的代码和一些输出。

import tweepy

consumer_key = "XXXXXXredactedXXXXXX"
consumer_secret = "XXXXXXredactedXXXXXX"
access_token = "XXXXXXredactedXXXXXX"
access_token_secret = "XXXXXXredactedXXXXXX"

client = tweepy.Client(
consumer_key=consumer_key, consumer_secret=consumer_secret,
access_token=access_token, access_token_secret=access_token_secret
)

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

query = 'irregardless'
max_tweets = 100

searched_tweets = [status for status in tweepy.Cursor(api.search_tweets, q=query).items(max_tweets)]
---------------------------------------------------------------------------
Forbidden                                 Traceback (most recent call last)
Cell In[1], line 20
17 query = 'irregardless'
18 max_tweets = 100
---> 20 searched_tweets = [status for status in tweepy.Cursor(api.search_tweets, q=query).items(max_tweets)]

...

File ~\anaconda3\lib\site-packages\tweepy\api.py:271, in API.request(self, method, endpoint, endpoint_parameters, params, headers, json_payload, parser, payload_list, payload_type, post_data, files, require_auth, return_cursors, upload_api, use_cache, **kwargs)
269     raise Unauthorized(resp)
270 if resp.status_code == 403:
--> 271     raise Forbidden(resp)
272 if resp.status_code == 404:
273     raise NotFound(resp)

Forbidden: 403 Forbidden
453 - You currently have access to a subset of Twitter API v2 endpoints and limited v1.1 endpoints (e.g. media post, oauth) only. If you need access to this endpoint, you may need a different access level. You can learn more here:

我尝试阅读 Stack Overflow,使用不同的 Tweepy 代码、Tweepy 文档、Twitter 开发人员文档、教程视频和开发人员论坛。几乎所有信息要么早于新的付费基本层 API 计划,要么是尚未付费的人希望他们的旧代码能够工作。

python twitter tweepy
1个回答
1
投票

您似乎正在尝试调用Twitter API v1.1,它只能用于媒体上传

删除以下代码,因为您必须使用 Twitter API v2

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

并且,您无法再使用

tweepy.cursor()
api.search_tweets()
功能。

您可以使用

client.search_recent_tweets()
tweepy.Paginator()
函数。

所以,替换:

searched_tweets = [status for status in tweepy.Cursor(api.search_tweets, q=query).items(max_tweets)]

使用以下代码行:

searched_tweets = tweepy.Paginator(client.search_recent_tweets, query=query,
                                max_results=max_tweets).flatten(limit=max_tweets)


如果您计划一次最多检索 100 条推文,则不需要 分页

因此,您可以使用以下代码行:

searched_tweets = client.search_recent_tweets(query=query, max_results=max_tweets)

欲了解更多信息:

https://developer.twitter.com/en/docs/twitter-api

https://docs.tweepy.org/en/stable/client.html#tweepy.Client.search_recent_tweets

https://docs.tweepy.org/en/latest/v2_pagination.html

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.