Должен ли токен доступа в oAuth генерировать каждый раз, когда пользователь входит в систему?

Я реализовал oAuth в php (в настоящее время для twitter), и, как я читал в нескольких учебниках, вы должны хранить токен доступа в db для будущего использования. Однако я не вижу, как вы знаете, если у вас есть токен доступа, который хранится для определенного пользователя, чтобы решить, следует ли вытащить его из db или восстановить его. Вот поток, описывающий мой вопрос:

Первый пользователь подписывает:

  • получить токен запроса
  • отправить пользователя на страницу аутентификации поставщика
  • пользователь возвращается к обратному URL-адресу с маркером oauth и ведомым oauth
  • получить токен доступа
  • сохранить токен доступа / user_id / screen_name на db для будущего использования

Пользователь возвращается через 10 минут:

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

Пользователь возвращается через 1 месяц:

  • получить токен запроса
  • отправить пользователя на страницу аутентификации поставщика
  • пользователь возвращается к обратному URL-адресу с маркером oauth и ведомым oauth
  • (на данный момент у меня есть только значки oauth, как я могу узнать, был ли пользователь ранее зарегистрирован в twitter и вытащил свой токен доступа из db?)
  • если это первый логин пользователя, сгенерируйте токен доступа.

Основной рабочий процесс для oAuth ясен, однако неясно, как обращаться с возвращающимися пользователями и какие данные должны быть сохранены или нет.

Миллион спасибо!

Related of "Должен ли токен доступа в oAuth генерировать каждый раз, когда пользователь входит в систему?"

Вы не должны регенерировать токен для каждого доступа. Создайте его только тогда, когда он истек. Я создал приложение twitter, используя OAuth. Здесь мой поток:

  1. при входе пользователя, я проверю, есть ли у них токен в БД

    1.1. Если он не существует, выполните проверку подлинности, а затем сохраните и используйте полученный токен

    1.2. Если он существует, используйте его.

    1.2.1. Если твиттер не жалуется, то токен все еще действителен, используйте его.

    1.2.2. Если твиттер жаловался, то токен истек. Вернитесь к 1.1.

    1.2.3. Если после x повторить твиттер все еще жаловался. Что-то не так, уведомите администратора!

Вот графическое объяснение:

введите описание изображения здесь