Как правильно подходить к социальной аутентификации Google в API REST node.js? - PullRequest
0 голосов
/ 01 мая 2019

Я работаю над двухуровневым приложением, в котором мой сервер представляет собой сервер REST API nodeJs (express), а интерфейс - клиентское приложение Android (а позже и веб-приложение).

Я хотел бы реализовать регистрацию и аутентификацию с помощью учетных записей Google, но я не совсем уверен, какой подход лучше.

Чего я хочу добиться, так это чтобы пользователи могли зарегистрироваться с помощью своей учетной записи Google, чтобы сервер создавал пользователя на основе своих данных профиля Google (электронная почта, имя пользователя). Затем пользователи могут войти в свою учетную запись Google.

(Вход в моем случае означает, что клиентское приложение получит токен JWT с сервера, подписанный электронной почтой и идентификатором пользователя. Затем клиент будет отправлять JWT в качестве токена-носителя в каждом запросе. Поэтому мой сервер не использует сессии.)

Я дошел до того, что могу получить токен доступа OAuth определенного пользователя и использовать его для получения информации профиля из GoogleAPI. (Я планирую сделать это с сервера. Есть ли причина сделать это из клиентского приложения?) Я могу создать пользователя приложения с этой информацией и сохранить его в базе данных вместе с токеном доступа. На данный момент проблем нет.

В чем я не уверен, так это в том, как аутентифицировать («войти») пользователя позже.

Мои мысли: Когда пользователи позже открывают клиентское (Android) приложение, они могут иметь или не иметь токен доступа. Если у них это есть, нет проблем, они могут отправить токен на сервер, и сервер может найти пользователя в базе данных с тем же токеном. Но если у клиента больше нет токена, он должен получить новый и отправить его на сервер. В этом случае сервер не найдет пользователя с этим токеном, но снова запросит информацию о профиле из API Google. Затем, используя информацию профиля, он может искать пользователя с тем же адресом электронной почты.

Это должно сработать, но так ли это правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...