#python #django #tweepy #django-allauth
Вопрос:
Я использую Django AllAuth для входа в Twitter, и он отлично работает, сохраняя токен и секрет токена в таблице токенов социальной учетной записи.
Затем я пытаюсь использовать Tweepy для отправки твита от имени пользователя (да, область действия позволяет это).
Но когда я пытаюсь отправить твит, я получаю tweepy.error.TweepError: [{'code': 32, 'message': 'Could not authenticate you.'}]
Вот код авторизации:
def auth_tweepy(user): twitter_auth_keys = settings.TWITTER_AUTH_KEYS auth = tweepy.OAuthHandler( twitter_auth_keys['consumer_key'], twitter_auth_keys['consumer_secret'] ) user_auth = SocialToken.objects.get(account__user=user, account__provider='twitter') auth.set_access_token( user_auth.token, user_auth.token_secret ) return tweepy.API(auth) def send_tweet(tweet_content): api = auth_tweepy(user) try: api.update_status(tweet_content) except tweepy.TweepError as error: if error.api_code == 187: print('duplicate message')
Я не думаю, что срок действия токенов истек, я ТОЛЬКО что вошел в систему. Есть идеи, что может вызвать ошибку 32 в этом случае?
Ответ №1:
Если я, код будет отлаживаться вот так:
# /usr/bin/env python3.8 # f'{a = }' requires Python3.8 def auth_tweepy(user): twitter_auth_keys = settings.TWITTER_AUTH_KEYS print('1' * 20, f'{twitter_auth_keys = }') auth = tweepy.OAuthHandler( twitter_auth_keys['consumer_key'], twitter_auth_keys['consumer_secret'] ) user_auth = SocialToken.objects.get(account__user=user, account__provider='twitter') print('2' * 20, f'{user = };{user_auth = }') auth.set_access_token( user_auth.token, user_auth.token_secret ) return tweepy.API(auth) def send_tweet(tweet_content): api = auth_tweepy(user) print('3'*20, f'{api = };{tweet_content = }') try: api.update_status(tweet_content) except tweepy.TweepError as error: if error.api_code == 187: print('duplicate message')