Как правильно организовать аутентификацию через email и через соц.сети в IOS-приложении?
Здравствуйте!
Подскажите, как организовать процесс аутентификации в IOS-приложениях, чтобы пользователь мог входить как через емейл (обычный логин/пароль), так и через соц. сети (например Facebook)?
Или, может быть,. есть какие-нибудь статьи на эту тему?
Про авторизацию через email - это можно или свой велосипед собирать или с помощью parse.com. Мы для этой задачи сделали на своем сервере систему аутентификации. Что касается соцсетей - то можно делать или через их встроенные СДК или через OAuth, благо, многие поддерживают OAuth2. Какие сети нужны? VK, FB и OK поддерживают OAuth2, с TW придется чуть сложнее.
Спасибо за ответ. Опишу нашу ситуацию. Пользователь, зарегистрировавшись или первый раз войдя через соц.сеть, должен дополнить параметры о себе (рост, вес и т.д.). Получается, что на нашем сервере нам в любом случае нужно будет сохранять пользователя (даже если он вошел через соц.сети). То есть его нужно будет потом как-то идентифицировать. По какому параметру? ID в соц сети? Или после входа через соц.сеть попросить пользователя ввести пароль и сохранить в своей БД под своим ID?
Нужно выбрать, как Вы собираетесь идентифицировать пользователя: по почте или нет. Если по почте, то пользователь с одним и тем же email не сможет регистрироваться через разные соцсети. И "перепривязывать" их можно будет из личного кабинета. Если нет - то тут другая проблема - восстановление пароля, ведь несколько пользователей смогут иметь один пароль.
Для идентификации по почте:
1. Зарегистрировались по email->завалидировали email. При регистрации через соцсеть с этим же email выдаем ошибку "пользователь с таким email существует". В кабинете делаем привязку к соцсети.
2. Зарегистрировались через соцсеть->запросили email->[далее по 1 варианту]. Тут можно организовать создание пароля для входа мимо соцсети.
Для идентификации по абстрактному идентификатору:
Все записи разделены и не связаны, несколько пользователей могут иметь один email. Пользователь, зашедший через VK != себе же через FB.
Теперь про хранение. Да, для идентификации пользователя достаточно хранить его ID, НО(!) процессом идентификации обязательно должен управлять backend(сервер). Flow: Из приложения делаем запрос к соцсети (OAuth) с callback на Ваш сервер-> соцсеть авторизует и форвардит запрос с access_token на сервер, тот создает/идентифицирует запись и возвращает JSON(например) с данными пользователя Вашей системы (не соцсети!).