Ответ 1
Вам нужно еще 2 поля в таблице, один из них - источник входа (твиттер, openID, facebook), а другой - идентификатор исходного пользователя (идентификатор, предоставленный из Twitter, openID, facebook). Я рекомендую сделать эту строку как некоторые источники журналов имеют буквы в своих идентификаторах пользователей, а не только цифры.
Затем, когда вы входите в систему, вы уже знаете источник, с которым они пытались войти, вы можете выйти замуж за него с удаленным идентификатором из своей таблицы, и если он существует, зарегистрируйте их, если нет, отправьте их в свою регистрационную форму чтобы они заполнили свое имя и адрес электронной почты.
Еще одна вещь, которую вы можете сделать в этой ситуации, - иметь таблицу соединений:
remote_source_users (user_id:integer, remote_source_id:string, remote_source:string)
Это означает, что вы можете поддерживать несколько удаленных учетных записей для одного и того же пользователя.