Ошибка 401: «Неверный или просроченный токен» при получении информации о пользователе с помощью API Twitter.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка 401: «Неверный или просроченный токен» при получении информации о пользователе с помощью API Twitter.

Сообщение Anonymous »

У меня возникла проблема с приложением Flask при попытке получить информацию о пользователе из API Twitter. Я продолжаю получать ошибку 401 с сообщением:

Ошибка восстановления информации пользователя: 401 - {"errors":[{" code":89,"message":"Неверный токен или токен с истекшим сроком действия."}]

Я использую базовую подписку для Twitter API, а не бесплатный.
Вот соответствующая часть моего кода:

Код: Выделить всё

from requests_oauthlib import OAuth1Session
import os

# Configurations de l'application
API_KEY = 'YOUR_API_KEY'
API_SECRET_KEY = 'YOUR_API_SECRET_KEY'
CALLBACK_URL = 'http://127.0.0.1:5000/callback'

app = Flask(__name__)
app.secret_key = os.urandom(24)

@app.route('/')
def home():
return render_template('home.html')

@app.route('/login')
def login():
# Clear old tokens
session.pop('oauth_token', None)
session.pop('oauth_token_secret', None)
session.pop('access_token', None)
session.pop('access_token_secret', None)

oauth = OAuth1Session(API_KEY, client_secret=API_SECRET_KEY, callback_uri=CALLBACK_URL)
request_token_url = 'https://api.twitter.com/oauth/request_token'
fetch_response = oauth.fetch_request_token(request_token_url)

# Store tokens in session
session['oauth_token'] = fetch_response.get('oauth_token')
session['oauth_token_secret'] = fetch_response.get('oauth_token_secret')

authorization_url = oauth.authorization_url('https://api.twitter.com/oauth/authorize')
return redirect(authorization_url)

@app.route('/callback')
def callback():
oauth = OAuth1Session(API_KEY, client_secret=API_SECRET_KEY,
resource_owner_key=session.get('oauth_token'),
resource_owner_secret=session.get('oauth_token_secret'))

if not session.get('oauth_token') or not session.get('oauth_token_secret'):
return "Authentication error. Please try again."

oauth_response = oauth.parse_authorization_response(request.url)

# Store access tokens
session['access_token'] = oauth_response.get('oauth_token')
session['access_token_secret'] = oauth_response.get('oauth_token_secret')

return redirect(url_for('profile'))

@app.route('/profile')
def profile():
oauth = OAuth1Session(API_KEY, client_secret=API_SECRET_KEY,
resource_owner_key=session['access_token'],
resource_owner_secret=session['access_token_secret'])

user_info_url = 'https://api.twitter.com/1.1/account/verify_credentials.json'
response = oauth.get(user_info_url)

if response.status_code != 200:
return f"Error retrieving user information: {response.status_code} - {response.text}"

user_info = response.json()
return render_template('profile.html', user=user_info)

if __name__ == '__main__':
app.run(debug=True)
Что я пробовал:
  • Я убедился, что мои ключи API (API_KEY и API_SECRET_KEY).
  • Я очистил сеанс перед запуском процесса аутентификации, чтобы убедиться, что старые токены не вызывают проблем.
  • Я проверил это приложение имеет необходимые разрешения для доступа к информации пользователя.
    Дополнительная информация:
  • Я использую базовую подписку на Twitter API.
    Ошибка появляется, когда я пытаюсь получить доступ к маршруту /profile после входа в систему.
Кто-нибудь может мне помочь? устранить эту проблему? Что может быть причиной ошибки «Неверный или просроченный токен» и как ее устранить?

Подробнее здесь: https://stackoverflow.com/questions/791 ... n-with-twi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»