Ответ 1
Для меня лучше всего использовать oauth2 (все социальные службы поддерживаются) и использовать базу данных с двумя таблицами: пользователями и пользователями_социальными.
Когда пользователи пытаются войти в систему через социальную сеть, ваш script будет создавать записи в таблицах и связывать эти таблицы с помощью отношения "один ко многим". Все социальные пользователи возвращают уникальный идентификатор для пользователя auth, а ваш script может вставить его на хранение для дальнейшего использования.
Табличная структура и тестовые данные
Пользователь таблицы
user_id | email
________________
1 | [email protected]
2 | [email protected] - if the social cannot return an email address
Таблица user_socials
social_id | user_id | social
____________________________
123213213 | 1 | facebook
332123213 | 1 | twitter
323232321 | 2 | vk
Этот шаблон хорош, потому что один пользователь может подключить много социальных сетей к своей учетной записи.
P.s. Facebook, Twitter, Google+ - возвращает адрес электронной почты пользователя