Я пытаюсь войти в систему через facebook. Для этого я использовал django-social-auth. Я успешно интегрировал его в свой тестовый проект. Однако я не знаю, как сопоставить пользователя с пользователем django auth. Чтобы быть более точным, скажем, например, что я аутентифицирую пользователя через facebook. После завершения сеанса пользователь выходит из системы. Когда пользователь возвращается во второй раз, опять же через facebook, как я узнаю, что это тот же пользователь? Я не могу использовать имя пользователя facebook, потому что имя пользователя можно изменить! Я не могу использовать идентификатор электронной почты пользователя по понятным причинам. Какой идентификатор из данных, отправленных facebook, считать уникальным для конкретного пользователя? Ключи из ответа, отправленного facebook, следующие:
['username', 'bio', 'first_name', 'last_name', 'verified', 'name', 'locale', 'hometown', 'work', 'expires', 'sports', 'languages', 'quotes', 'link', 'location', 'gender', 'access_token', 'timezone', 'education', 'updated_time', 'id']
Тем не менее, наиболее очевидным для меня ответом является использование «id» для идентификации пользователя, каковы шансы, что facebook переместит все свои данные на новые серверы, а поле «id», связанное с пользователями, изменится? Если это произойдет, это может привести к тому, что пользователь с измененным идентификатором получит доступ к данным другого пользователя, если он получит тот же идентификатор, что и предыдущий идентификатор последнего! Вероятно, я могу использовать комбинацию «id» и «имя пользователя», поскольку facebook позволяет вам изменить имя пользователя только один раз. Но если они снимут это ограничение, это нарушит мою логику. Я совершенно новичок в OAuth2, поэтому, пожалуйста, простите мое невежество, если это звучит глупо. Я пытался немного исследовать, но потерялся в огромных учебниках! Как люди обычно справляются с этим?
РЕДАКТИРОВАТЬ: ответы на вопрос, связанный как дубликат, не отвечают на мой вопрос о том, как бороться с изменением идентификатора на стороне facebook. Хотя это редкий случай, такую возможность нельзя исключать, особенно потому, что изменение произойдет на стороне Facebook, и я не могу это контролировать. Более того, у меня даже не было бы намека, когда он изменится. И если такое произойдет, безопасность пользователей моего приложения будет под угрозой! Поскольку OAuth2 является своего рода стандартом, есть ли какие-либо рекомендации по уникальному идентификатору? Есть ли какие-либо правила, запрещающие провайдеру изменять идентификатор пользователя?