Как получить новый access_token из refresh_token с помощью django_oauth_toolkit?

Я использую django-oauth-toolkit версия 1.1.2 чтобы получить access_token, как показано ниже:-

Reauest:-

POST http://localhost:8597/login

{
    "application_id": "cuOt3raxH9ClbCrbbgP68iU6ssfO2N78TplxwlMq",
    "username": "test@gmail.com",
    "password": "test",
    "grant_type": "password"
}

Response:-

{
    "type": "success",
    "shortDescription": "User Logged in",
    "longDescription": "User logged in successfully",
    "success": "User Logged in",
    "success_message": "User logged in successfully",
    "data": {
        "access_token": "RXMXGNl2HqYJMVkCBkrrMU5aYFS8uU",
        "expires_in": 31536000,
        "token_type": "Bearer",
        "scope": "read write",
        "refresh_token": "wsLetw7c2Q56k07XoisWkEa7SYxORb",
        "user": {
            "id": "c7d9f8ee-5e87-4a70-9c07-6a2e8c13a50a",
            "created_at": "2019-11-21T16:55:45.817324+05:30",
            "email": "test@gmail.com",
            "first_name": "Test",
            "last_name": "User",
            "is_deleted": false,
            "is_email_verified": true,
            "last_login": "2020-02-19T11:17:24.656615+05:30",
            "landline_country_code": "us",
            "landline_number": "3242343434",
            "mobile_country_code": "us",
            "mobile_number": "34234234324",
            "role": "USER",
            "designation": "software engineer",
            "is_active": true,
        },
}

Теперь я хочу использовать этот "refresh_token" для получения нового access_token, я делаю следующий запрос:-

Request:-

POST http://localhost:8597/o/token/

{
    "grant_type": "refresh_token",
    "client_id": "sHPPirW86SuOwDOfhxmag1fZ9oRCpHFS24wrZj00",
    "refresh_token":"wsLetw7c2Q56k07XoisWkEa7SYxORb"
}

Response:-

{
    "error": "invalid_grant"
}

Что-то не так с этим запросом, не могли бы вы посоветовать мне, как это исправить? Спасибо.

1 ответ

Запрос в порядке. Но обратите внимание, что мы также получим ту же ошибку, когда токен недействителен. Поскольку набор инструментов по умолчанию использует ротацию токенов обновления, это также включает случай, когда токен обновления уже был использован, что привело к тому, что тот же запрос работал в первый раз, а затем завершился ошибкой. invalid_grant ошибка во всех последующих попытках, что, как я подозреваю, могло быть связано с вашим запросом.

Кроме того, вы также можете проверить объект токена обновления для этого конкретного токена, используемого в вашем запросе, и посмотреть, был ли он уже отозван или нет.

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