Получение refresh_token с помощью lepture/authlib

Я использую Authlib и пытаюсь получить refresh_token с сервера Hydra. У меня есть следующий код:

from authlib.client import OAuth2Session

client_id = "my-client"
client_secret = "client secret"
token_url = "https://myhydraserver/token"
scope = 'openid email profile offline'
session = OAuth2Session(client_id, client_secret, scope=scope)

token = session.fetch_access_token(token_url)
print(token)

Это распечатывает

{'access_token': 'the-token', 'expires_in': 3599, 'scope': '', 'token_type': 'bearer', 'expires_at': 1519224804}

Из документов я вижу, что есть функция для получения токена доступа из refresh_token, но не может найти способ получить refresh_token. Как бы я получить получение refresh_token? Гидра настроена с:

  --grant-types authorization_code,refresh_token,client_credentials,implicit 
  --response-types token,code,id_token 

который должен раздавать refresh_tokens.

1 ответ

Решение

client_credentials не выдаст токен обновления. Вам нужно использовать поток authorization_code для получения токена обновления.

https://docs.authlib.org/en/latest/client/oauth2.html

Другие вопросы по тегам