如何解决Tweepy代码中的403 Forbidden错误?
修复Tweepy发布推文时的403 Forbidden错误
我用以下Tweepy代码尝试发布推文时遇到了403 Forbidden错误,查资料、看视频后仍未解决,该如何修复?
import tweepy, codecs consumer_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' access_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' Bearer_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) api.update_status("Hello from Python for Udemy Data Science and Machine Learning Course")
错误信息如下:
Forbidden Traceback (most recent call last) Cell In[8], line 1 ----> 1 api.update_status("Hello from Python for Udemy Data Science and Machine Learning Course") File ~\anaconda3\lib\site-packages\tweepy\api.py:46, in payload.<locals>.decorator.<locals>.wrapper(*args, **kwargs) 44 kwargs['payload_list'] = payload_list 45 kwargs['payload_type'] = payload_type ---> 46 return method(*args, **kwargs) File ~\anaconda3\lib\site-packages\tweepy\api.py:979, in API.update_status(self, status, **kwargs) 976 if 'media_ids' in kwargs: 977 kwargs['media_ids'] = list_to_csv(kwargs['media_ids']) ---> 979 return self.request( 980 'POST', 'statuses/update', endpoint_parameters=( 981 'status', 'in_reply_to_status_id', 982 'auto_populate_reply_metadata', 'exclude_reply_user_ids', 983 'attachment_url', 'media_ids', 'possibly_sensitive', 'lat', 984 'long', 'place_id', 'display_coordinates', 'trim_user', 985 'card_uri' 986 ), status=status, **kwargs 987 ) 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 - 你当前仅能访问Twitter API v2的部分端点和有限的v1.1端点(如媒体上传、oauth)。若需访问此端点,可能需要不同的权限等级。
修复方案
切换到Twitter API v2接口
错误提示明确指出v1.1的statuses/update端点权限不足,现在推荐使用v2 API发布推文。用Tweepy的Client类替代API类,示例代码:import tweepy bearer_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' consumer_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' access_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # 初始化v2客户端 client = tweepy.Client( bearer_token=bearer_token, consumer_key=consumer_key, consumer_secret=consumer_secret, access_token=access_token, access_token_secret=access_token_secret ) # 发布推文 response = client.create_tweet(text="Hello from Python for Udemy Data Science and Machine Learning Course") print(f"推文发布成功,ID: {response.data['id']}")确认API权限配置
登录Twitter开发者后台,检查你的项目是否拥有v2的Write权限。如果坚持使用v1.1 API,需要确保账号已申请并获得Read and Write权限(新账号默认可能仅开放读权限)。验证Token权限
确认你的access token和access token_secret具备写权限,部分生成的token可能仅拥有读权限,需要重新生成具备读写权限的token。
内容的提问来源于stack exchange,提问作者Fatih Mehmet Koç
相关产品推荐
相关产品推荐

