403 禁止 - 尝试使用 client.get_user() 访问推文/用户数据时出现 Tweepy 身份验证错误

问题描述 投票:0回答:2
import tweepy
import os

api_key = os.getenv('TWI_API_KEY')
api_key_secret = os.getenv('TWI_API_KEY_SECRET')
bearer_token = os.getenv('TWI_BEARER_TOKEN')
access_token = os.getenv('TWI_ACCESS_TOKEN')
access_token_secret = os.getenv('TWI_ACCESS_TOKEN_SECRET')

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

user_get = client.get_user(username='twitterusers')
user_id = user_get.data.id
print(user_id)

上面是我迄今为止在尝试创建一个 Twitter 机器人来回复特定用户最近的推文时编写的代码,但是我并没有做到这一点,因为在尝试使用客户端时收到以下错误。 get_user() 方法检索用户的 Twitter ID:

tweepy.errors.Forbidden: 403 Forbidden When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project. You can create a project via the developer portal.

我进入 Twitter 开发者门户 --> 用户身份验证设置,并确保应用程序权限设置为“读取和写入”。

然后,我尝试重新生成所有密钥和令牌,并确保凭证本身的有效性没有问题。

当我发现我能够使用以下代码成功发送推文而不会收到任何错误时,我进一步确认这不是密钥或令牌的问题。

import tweepy
import os

api_key = os.getenv('TWI_API_KEY')
api_key_secret = os.getenv('TWI_API_KEY_SECRET')
bearer_token = os.getenv('TWI_BEARER_TOKEN')
access_token = os.getenv('TWI_ACCESS_TOKEN')
access_token_secret = os.getenv('TWI_ACCESS_TOKEN_SECRET')

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

response = client.create_tweet(text='Testing!')

print(response)

我尝试更改传递给 tweepy.Client() 的凭据,首先仅使用 bearer_token。正如我在一些示例中看到的那样,仅传递 bearer_token,我收到了与上面提到的相同的 403 错误。

然后我尝试传递consumer_key、consumer_secret、access_token、access_token_secret。 在这种情况下,我收到以下 401 错误:

tweepy.errors.Unauthorized: 401 Unauthorized

Unauthorized

无论哪种情况,我都无法使用 Client.get_user()

python twitter bots tweepy http-status-code-403
2个回答
2
投票

该错误是因为 Twitter 政策发生了变化,在免费套餐中,我们无法提取推文,只有当我们有每月 100 美元的基本订阅时,我们才能做到这一点。 详细信息可以在这里找到:https://developer.twitter.com/en/products/twitter-api


0
投票

根据twitter的开发者平台,免费的API是:

  1. 适用于只写用例和测试 X API
  2. 对 v2 帖子发布和媒体上传端点的访问进行速率限制

这意味着您只能发推文。从推文中检索数据以及以任何方式与用户交互(消息、点赞、转发等)等操作仅在付费计划中受支持

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