Моя браузерная игра позволяет пользователям играть только в том случае, если они аутентифицируются с использованием OAuth 2.0 + OID C определенным c провайдером, использующим Код авторизации тип предоставления. Предположим, провайдер - Google. Моей браузерной игре просто нужны две информации: пользовательский Google ID и пользовательский Google email . Чтобы получить эту информацию, мое приложение запрашивает у сервера аутентификации Google и токен доступа (OAuth 2.0), и токен ID (OID C). Поскольку моя игра поддерживается базой данных, когда она получает данные, полученные от Google, она создает нового пользователя в базе данных, сохраняя как идентификатор, так и адрес электронной почты. Конечно, в будущем, если у пользователя уже есть запись в базе данных, приложение не будет создавать никаких новых записей, но, возможно, просто проверяет, изменилось ли электронное письмо (это может произойти), а затем обновляет его также внутри базы данных. (поскольку полученный Google ID пользователя является первичным ключом таблицы пользователя). Хорошо, достаточно справедливо (я надеюсь).
Теперь начинается первая борьба: как мне управлять следующими полученными данными? На практике в конце процесса я получил следующие разумные данные :
- Код авторизации ( Нужно ли хранить это где-нибудь? Это важно? )
- Google ID пользователя (хранится в базе данных приложения)
- Google Email пользователя (хранится в базе данных приложения)
- ID токен ( используется для получения вышеуказанных утверждений, тогда я думаю, что хранить его вообще бесполезно, верно? )
- токен доступа ( Должен ли я хранить это? Если да, то как Я думаю, где лучшее место? )
Моя вторая борьба: Как мне управлять сеансом вошедшего в систему пользователя? На практике, как мне это сделать? оставить вошедшего в систему пользователя до истечения срока действия токена доступа? Кроме того, поскольку у меня нет питания на маркере доступа, как в этом случае работает выход из системы? (может быть, мне нужно вызвать конечную точку / revoke ?)
Пожалуйста, исправьте меня, если я что-то не так сказал, я новичок в OAuth 2.0 и OID C, поэтому я ищу лучшие практики для использования в описанном сценарии. Спасибо за ваше время.