[PYTHON] Ich war süchtig danach, keine E-Mail-Adresse von Google mit Django-Allauth-Authentifizierung zu erhalten

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.

Was ist passiert

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. not_email.png Abbildung: Inhalt des erstellten Kontos nach der sozialen Anmeldung bei Google (auf dem Verwaltungsbildschirm überprüfen)

Ursache

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

Ansatz

Um dieses Problem zu umgehen, können Sie eine der beiden folgenden Methoden ausführen.

  1. Setzen Sie in settings.py ACCOUNT_EMAIL_REQUIRED = True
  2. Legen Sie in settings.py den Bereich des Google-Anbieters mit "SOCIALACCOUNT_PROVIDERS" fest

1. Setzen Sie in settings.py 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)

2. Legen Sie in settings.py den Bereich des Google-Anbieters mit "SOCIALACCOUNT_PROVIDERS" fest

settings.py


SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'SCOPE': [
            'profile',
            'email',
         ],
    },
}

In dieser Einstellung wird im Gegensatz zu Methode 1 die direkt zu verwendende API angegeben.

Zusammenfassung

Dies ist die Ursache und Abhilfe für den Fall, dass E-Mail-Informationen vom Anbieter mit django-allauth nicht abgerufen werden können.

Referenz

Recommended Posts

Ich war süchtig danach, keine E-Mail-Adresse von Google mit Django-Allauth-Authentifizierung zu erhalten
Ich war süchtig danach, Markdown nicht für die lange Beschreibung von Pypi verwenden zu können
Ich konnte die Web-App-Authentifizierung mit Flask-Login implementieren
Eine Geschichte, die ich süchtig danach war, eine Video-URL mit Tweepy zu bekommen
Verwenden Sie Python aus Java mit Jython. Ich war auch süchtig danach.
Senden Sie eine E-Mail mit Python an Spushis Adresse
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
[IOS] GIF-Animation mit Pythonista3. Ich war süchtig danach.
Ich habe versucht, mit Python eine E-Mail von Amazon SES zu senden
Eine Geschichte, die ich süchtig danach war, Lambda von AWS Lambda anzurufen.
Die Geschichte, dass man mit Pycharm kein Pygame spielen kann
Was ich mit json.dumps in Pythons base64-Codierung süchtig gemacht habe
Beim Versuch, maec 4.0.1.0 mit pip zu installieren, wird eine Fehlermeldung angezeigt
Ich habe versucht, E-Mails vom Sakura-Server mit Flask-Mail zu senden
Ich war süchtig nach Multiprocessing + Psycopg2
Ich konnte den Thermodrucker "PAPERANG" aus Python (Windows10, Python3.6) drucken.
Über das Starten einer Instanz mit einem verschlüsselten EBS-Volume (wo ich süchtig war)
Ich war süchtig danach, Tensorflow auf einer GPU mit dem NVIDIA-Treiber 440 + CUDA 10.2 auszuführen
Senden Sie E-Mails mit Python an eine bestimmte E-Mail-Adresse, ohne SMTP festzulegen
Ich war süchtig danach, eine Python-Venv-Umgebung mit VS Code zu erstellen
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich war süchtig danach, Cython mit PyCharm auszuprobieren, also machen Sie sich eine Notiz
Ich erhalte eine Fehlermeldung beim Import von Pandas.
Ich habe versucht, mit Hy anzufangen
Ich war süchtig danach, mysqlclient zu installieren
Holen Sie sich mit pyVISA Daten von einem Oszilloskop
Was ich süchtig nach Python Autorun war
[Anmerkung] Eine Geschichte darüber, dass es nicht möglich ist, den Proxy mit pip zu durchbrechen
Drei Dinge, von denen ich süchtig war, als ich Python und MySQL mit Docker verwendete
Ich konnte AWS-Batch mit Python, Moto verspotten, also werde ich es verlassen
Ich habe versucht, die Strichzeichnung mit Deep Learning aus dem Bild zu extrahieren
Ein Hinweis, dem ich beim Ausführen von Python mit Visual Studio Code verfallen war
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war