Я использую python-social-auth с django. Я хочу авторизоваться через facebook, но раньше я уже регистрировался по умолчанию (адрес электронной почты, пароль) с адресом электронной почты, который используется facebook. Могу ли я связать учетную запись facebook с зарегистрированной учетной записью? Я пытался поискать, но ничего
повторяющаяся запись в социальной сети python
Ответы (1)
Проверьте Свяжите пользователей по электронной почте, это должно объяснить, как это сделать.
Свяжите пользователей по электронной почте
Иногда желательно, чтобы учетные записи социальных сетей автоматически связывались, если адрес электронной почты уже совпадает с учетной записью пользователя.
Например, если пользователь зарегистрировался со своей учетной записью Facebook, затем вышел из системы и в следующий раз попытается использовать Google OAuth2 для входа в систему, было бы неплохо (если на обоих социальных сайтах настроен один и тот же адрес электронной почты), чтобы пользователь попал в свой первоначальный учетная запись, созданная серверной частью Facebook.
Этот сценарий возможен при включении конвейерной функции associate_by_email, например:
SOCIAL_AUTH_PIPELINE = ( 'social_core.pipeline.social_auth.social_details', 'social_core.pipeline.social_auth.social_uid', 'social_core.pipeline.social_auth.auth_allowed', 'social_core.pipeline.social_auth.social_user', 'social_core.pipeline.user.get_username', 'social_core.pipeline.social_auth.associate_by_email', # <--- enable this one 'social_core.pipeline.user.create_user', 'social_core.pipeline.social_auth.associate_user', 'social_core.pipeline.social_auth.load_extra_data', 'social_core.pipeline.user.user_details', )
Эта функция отключена по умолчанию, потому что автоматизировать этот процесс со всеми серверными ВМ не на 100%. Не все провайдеры будут проверять вашу учетную запись электронной почты, и другие пользователи могут этим воспользоваться.
Возьмем, к примеру, пользователя А, зарегистрированного на вашем сайте с адресом электронной почты [email protected]. Затем злоумышленник регистрируется у другого провайдера, который не проверяет его электронную почту с той же учетной записью. Наконец, этот пользователь обратится на ваш сайт (который поддерживает этого провайдера) и зарегистрируется на нем, поскольку адрес электронной почты тот же, злоумышленник получит контроль над учетной записью пользователя A.
РЕДАКТИРОВАТЬ: Ссылка на исправленные и скопированные детали документов в этот ответ.
associate_by_email
не будет работать с вошедшими в систему пользователями (в основном потому, что слияние учетных записей пользователей сильно привязано к проекту), не вернет пользователя, если нет учетной записи с этим адресом электронной почты, он вызовет исключение, если более 1 учетной записи пользователя совместно используют тот же адрес электронной почты (потому что не какой выбрать, первый? второй? третий?).
- person omab; 02.04.2014