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