Как реализовать аутентификацию пользователя на собственном сервере из мобильного приложения с использованием входа через соц. сети?
Определяем 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) Допустим в приложении есть возможность использования 2 соц-сетей. Как безопасно заставить сервер распознавать пользователя как одного человека, если в какой-то момент от вышел из одного аккаунта, а потом решил зайти под аккаунтом другой соцсети?
обычно это делается с помощью email - если email совпадает то это один юзер