PHP oauth2 как использовать refresh_token

Im немного озадачен, как правильно использовать auth_ и refresh_token в php.

Я зарегистрировал новое клиентское приложение в OAuth-provider. После этого мое приложение отправляет идентификатор клиента и секрет в конечную точку OAuth2-authorization-endpoint, которая возвращает следующее:

Array
(
    [result] => Array
        (
            [access_token] => qjdcshsmgwcuvi7hzpgxwqapfb8aoab60fmprk1g
            [expires_in] => 86400
            [token_type] => Bearer
            [scope] => basic
            [refresh_token] => whnutk9npmaikcn1bxbovleuqn9ggn9j00jgyiph
        )

    [code] => 200
    [content_type] => application/json
) 

Отлично, теперь я могу запросить API с помощью access_token. Но access_token истечет через 24 часа, и весь танец начнется снова.

Вопросы:

  • где я храню access_token, что весь процесс не выполняется на каждом запросе? Сеанс не будет постоянным, в файле conf, memcache БД?)
  • Как обращаться с токеном обновления, нужно ли сохранять отметку времени в сеансе и проверять, нужно ли запрашивать новый access_token?

1 ответ

  1. Если вы используете эти маркеры только тогда, когда пользователь находится в сети (например, вошел в приложение), то я буду хранить его в переменной сеанса. Если вы также будете использовать маркеры, когда пользователь не находится в сети, рекомендуется хранить их в базе данных.
    В первом случае вы будете получать маркер обновления при каждом входе пользователя. Во втором случае вы получите маркер обновления только один раз (т. е. когда пользователь связывает свою учетную запись стороннего пользователя с вашим приложением).

    Чтобы ответить на ваш второй вопрос, было бы целесообразно сохранить отметку времени истечения срока действия с access_token.