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()
该错误是因为 Twitter 政策发生了变化,在免费套餐中,我们无法提取推文,只有当我们有每月 100 美元的基本订阅时,我们才能做到这一点。 详细信息可以在这里找到:https://developer.twitter.com/en/products/twitter-api
根据twitter的开发者平台,免费的API是:
这意味着您只能发推文。从推文中检索数据以及以任何方式与用户交互(消息、点赞、转发等)等操作仅在付费计划中受支持