Документация для Sylius REST API указывает, что его система авторизации oAuth поддерживает три типа предоставления.
php bin/console sylius:oauth-server:create-client \
--grant-type = "password" \
--grant-type = "refresh_token" \
--grant-type = "token"
Тип гранта password
позволяет вам получить токен из /api/oauth/v2/token
, используя ваше имя пользователя и пароль администратора (при условии, что у пользователя есть роль ROLE_API_ACCESS
).
Когда вы получаете этот токен, он падает с access_token
и refresh_token
.
{
"access_token":"ODE0NzA2NmU1NGVkNDc5ODNiNjcxZDBhZTA0NGY3MzY4NjBlMTc3ZDk0ZjM3MTIyOTlkMTQzMWU3YjM3ODc5ZQ",
"expires_in":3600,
"token_type":"bearer",
"scope":null,
"refresh_token":"NjNlNGY1YTQ5NmJhMzZiNzdlY2JmMzQyZDc5MGZkYTA5Mzg4MDc2MmRmZTRmOWE0MmMwNzU4NzBmMGM3YzVmZQ"
}
Когда срок действия вашего токена истекает, если ваш клиент имеет тип гранта refresh_token
, вы можете использовать конечную точку /api/oauth/v2/token
для получения нового токена с помощью параметра/аргумента refresh_token
.
Итак, что такое тип гранта token
? Когда я думаю об этом, я застреваю на вопросе: «Как вы можете получить токен от /api/oauth/v2/token
, если у вас его нет?» или «Если у вас уже был токен, срок действия которого не истек, зачем вам использовать token
, чтобы получить новый?»
Итак, что мне не хватает? Для чего нужен тип гранта токена?
Существует несколько типов грантов, предоставляемых OAuth2. Посмотреть их здесь. Я не уверен, какой именно используется sylius, когда вы запрашиваете "token"
, но я предполагаю, что это код авторизации.
The most common OAuth 2.0 grant types are listed below.
Authorization Code
Implicit
Password
Client Credentials
Device Code
Refresh Token
Спасибо - эта ссылка на спецификацию была мне нужна!
«токен» соответствует «неявному» типу предоставления: github.com/FriendsOfSymfony/oauth2-php/blob/master/lib/…