Всем привет. Как правильно сделать аутентификацию пользователей через соц.сети на примере фейсбука?
Логика вроде бы простая. На бекенде это просто API сервер с JWT. Есть таблица users и есть таблица для социальных аккаунтов, c такой структурой:
где userId - это внешний ключ, а socialProviderId - это id юзера в соц.сети. Т.к. в системе и юзеры, которые входят как обычно, через логин и пароль, и юзеры логинящиеся через соц.сети, то процедура регистрации выглядит так:
ФБ возвращает такой объект из приложения логина:
{
"name":"имя и фамилия",
"email":"почта",
"picture": {
"data": {
"height":50,
"is_silhouette":false,
"url":"",
"width":50
}
},
"first_name":"имя",
"last_name":"фамилия",
"id":"id"
}
Создаю рандомный пароль, записываю данные в обе таблицы. И получается, что единственная уникальная неизменная вещь в этом всем - это id пользователя в приложении ФБ. И только по нему можно аутентифицировать пользователя.
И вопрос, безопасно ли это? Я вижу, что id юзера в ФБ приложении не равен id пользователя на самом ФБ, но этот id-шник есть в ссылке на аватарку, и, получается, её уже нельзя использовать у себя на сайте. Какие еще есть моменты? Как вообще лучше сделать?