Bei der Implementierung der Social Login-Funktion mit django-allauth war ich süchtig danach, keine E-Mail-Informationen erhalten zu können. Da es eine große Sache ist, werde ich das Ereignis, die Ursache und die Gegenmaßnahmen in diesem Artikel verlassen.
Ich habe versucht, django-allauth zu verwenden, um die soziale Anmeldung bei Google zu aktivieren. Ich bestätigte, dass ich mich anmelden konnte, indem ich es wie im offiziellen Dokument und im Qiita-Artikel beschrieben implementierte. Als ich mir jedoch die erstellten Kontoinformationen ansah, war die E-Mail-Adresse aus irgendeinem Grund leer. Abbildung: Inhalt des erstellten Kontos nach der sozialen Anmeldung bei Google (auf dem Verwaltungsbildschirm überprüfen)
Zusammenfassend war die Ursache, dass der Umfang des Google-Anbieters nicht richtig eingestellt wurde.
Der Google-Anbieter, über den django-allauth standardmäßig verfügt, setzt den Standardbereich nur auf "Profil".
E-Mail-Adressinformationen sind in der Antwort der Profil
-API nicht vorhanden. Da die Informationen überhaupt nicht von Google bezogen wurden, bedeutet dies, dass dieses Ereignis aufgetreten ist.
Also, wie man damit umgeht ... Die Lösung besteht darin, dem Bereich eine "API hinzuzufügen, die Ihnen E-Mail-Adressinformationen liefert". Im Fall von Google lautet der Name der API übrigens "E-Mail".
*Was ist Umfang? Klicken Sie hier ➡Bearbeiten des OAuth2-Bereichs| Apigee | Google Cloud
Um dieses Problem zu umgehen, können Sie eine der beiden folgenden Methoden ausführen.
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_REQUIRED = True
setting.py
...
ACCOUNT_EMAIL_REQUIRED=True
...
Mit dieser Einstellung leistet django-allauth gute Arbeit, sodass Sie E-Mail-Adressinformationen nicht nur von Google, sondern auch von anderen Anbietern erhalten können. Im Fall des Google-Anbieters wird beispielsweise zusätzlich zur "Profil" -API die "E-Mail" -API ohne Erlaubnis zum Standardbereich hinzugefügt. (Weitere Informationen finden Sie unter githu)
settings.py
SOCIALACCOUNT_PROVIDERS = {
'google': {
'SCOPE': [
'profile',
'email',
],
},
}
In dieser Einstellung wird im Gegensatz zu Methode 1 die direkt zu verwendende API angegeben.
Dies ist die Ursache und Abhilfe für den Fall, dass E-Mail-Informationen vom Anbieter mit django-allauth nicht abgerufen werden können.
Recommended Posts