Что бы ID из разныхь соц.сетей не перепутались и не перемешались лучше всего создать отдельную таблицу с данными и разбить ее по названиям соц.сетей.
Берете ID пользователя, который прилетает от соц.сети (у всех соц.сетей есть эти ID и как правило они идут первыми и основными данными). Эти ID внутренние и очень часто они не совпадают с публичными, которые видно в адресной строке, когда заходите в профиль человека в соц.сети.
Создаете запись с названием полученного ID в разделе таблицы посвященном этой соц сети. В нее будет вписываться ваш внутренний ID, что бы потом идентифицировать человека.
В отдельной таблице своей базы у вас при каждой реге должна создаваться отдельная новая графа с вашими внутренними идешниками id1 id 2 и т.д. и в нее вносятся данные о человеке прилетевшие от соц.сети. Все какие есть, каких нехватает, пользователь сможет потом ввести вручную на сайте, если дадите ему такую возможность.
Впоследствии, при авторизации через соц сеть, вам будет вновь приходить ID человека из соц.сети, вы делаете запрос по таблице той соц.сети через которую проходит авторизацию пользователь. В графе с этим ID вы записали свой внутренний ID профиля. Берете его и делаете поиск этого профиля уже по своей общей базе профилей. Находите нужный и берете из него все данные и авторизовываете.
В общем у вас должно получиться несколько таблиц соц.сетей. С графами, названиями которых выступают ИД пользователей из соц.сетей. В этих графах лишь одно значение - Внутренний ИД пользователя на вашем сайте.
И потом этот внутренний ID ищется по вашей базе пользователей и с ним работаете. Если пользователь будет авторизовываться через разные соц.сети, то и профили у него на сайте вашем будут разные. И это каждый пользователь и так понимает.