Как реализовать аутентификацию пользователя на собственном сервере из мобильного приложения с использованием входа через соц. сети?

Подскажите, пожалуйста.
Хочу реализовать вход через популярные соц сети из мобильного приложения. Уже имеется рабочий сервер для регистрации и аутентификации по (почта/тел) и пароль. Далее взаимодействие с сервером происходит по обмену токеном. Каким образом аутентифицировать пользователя на собственном сервере с созданием собственного профиля? Вот что меня конкретно интересует:
1) Допустим соцсеть предоставляет уникальное поле (почта, тел, id). Придется заставить придумать пароль? Или есть возможность как использовать access-token, но он же не вечный.
2) Допустим в приложении есть возможность использования 2 соц-сетей. Как безопасно заставить сервер распознавать пользователя как одного человека, если в какой-то момент от вышел из одного аккаунта, а потом решил зайти под аккаунтом другой соцсети?
Нужно свежее решение. Рад буду услышать от каждого отвечающего его видение решения проблемы!
  • Вопрос задан
  • 1203 просмотра
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Определяем UUID, ищем в базе этот UUID.
При отсутствии этого UUID: привязываем к первому E-MAIL (вручную: логин+пароль или OAUTH) и отправляем на сервер, затем просим ввести желаемый LOGIN в системе.
К LOGIN привязываем UUID.
Получается связка: LOGIN->UUID->E-MAIL
При входе из другой соц.сети: по UUID также кладёте новую почту на сервер.
При входе с почтовым адресом - определяете UUID на основе имеющейся почты (дочерние элементы) и дальше - разветвление:
1. ОДИН метод - авторизация через него.
2. НЕСКОЛЬКО (несколько соц.сетей OAUTH, пароль) - выводим список возможных методов (НЕ E-MAIL-ОВ!)

В общем, структура в итоге для одного аккаунта:
LOGIN->[UUID-1]->[E-MAIL-1]
.............................
LOGIN->[UUID-1]->[E-MAIL-N]
.............................
LOGIN->[UUID-N]->[E-MAIL-N]

Структура позволит зайти как с нескольких устройств (в том числе новых), так и с несколькими методами авторизации для всех этих устройств (вне зависимости от ОС и платформы).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
gadfi
@gadfi
https://gamega.org
2) Допустим в приложении есть возможность использования 2 соц-сетей. Как безопасно заставить сервер распознавать пользователя как одного человека, если в какой-то момент от вышел из одного аккаунта, а потом решил зайти под аккаунтом другой соцсети?

обычно это делается с помощью email - если email совпадает то это один юзер
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы