Ich benutze django social auth für das soziale Login. Wenn sich ein Benutzer mit der Google Mail-ID anmeldet, werden bei seinem nächsten Besuchs-Logins über die soziale Anmeldung von Google Mail zwei Benutzer für denselben Benutzer mit einem anderen Benutzernamen und derselben E-Mail-ID erstellt. Wenn der Benutzer nun versucht, sich mit dieser Google Mail-ID anzumelden, wird der Fehler MultipleObjectsReturned ausgelöst.
Gibt es eine Möglichkeit, die E-Mail-ID eines Benutzers bei der Protokollierung zu überprüfen, falls diese bereits vorhanden ist, verknüpfen Sie sie mit diesem Benutzer.
Antworten:
3 für die Antwort № 1Möglicherweise müssen Sie zeigen, welche PIPELINE Sie in Ihrem Computer bereitstellen settings.py
Datei.
Aber die Antwort ist:
In Einstellungen wie einfügen "social_auth.backends.pipeline.associate.associate_by_email",
0 für die Antwort № 2
In settings.py hinzufügen:
SOCIAL_AUTH_PIPELINE = (
"social.pipeline.social_auth.social_details",
"social.pipeline.social_auth.social_uid",
"social.pipeline.social_auth.auth_allowed",
"social.pipeline.social_auth.social_details",
"social.pipeline.social_auth.social_user",
"social.pipeline.user.get_username",
"social.pipeline.social_auth.associate_by_email",
"social.pipeline.user.create_user",
"social.pipeline.social_auth.associate_user",
"social.pipeline.social_auth.load_extra_data",
"social.pipeline.user.user_details",
)