[PYTHON] Authentifier Google avec Django

Authentifier Google avec Django

Connectez-vous à Django en utilisant votre compte Google au lieu du vôtre. Je ne l'ai pas compris même après avoir lu le Lisez-moi du module à utiliser, alors prenez note.

Quoi utiliser

La version est celle que j'ai utilisée.

procédure

Il est supposé que python manage.py runserver est prêt à fonctionner. Assurez-vous également que l'application Google a déjà été créée et que vous disposez d'un identifiant et d'une clé secrète.

Tout d'abord, installez python-social-auth pip install python-social-auth

Ensuite, écrivez les paramètres dans settings.py et urls.py.

Ajoutez ce qui suit à project / setting.py

INSTALLED_APPS = (
   ...
   'social.apps.django_app.default',
   ...
)

TEMPLATE_CONTEXT_PROCESSORS = (
   'django.contrib.auth.context_processors.auth',
   'django.core.context_processors.debug',
   'django.core.context_processors.i18n',
   'django.core.context_processors.media',
   'django.core.context_processors.static',
   'django.core.context_processors.tz',
   'django.contrib.messages.context_processors.messages',
   'social.apps.django_app.context_processors.backends',
   'social.apps.django_app.context_processors.login_redirect',
)

AUTHENTICATION_BACKENDS = (
   'social.backends.facebook.FacebookOAuth2',
   'social.backends.google.GoogleOAuth2',
   'social.backends.twitter.TwitterOAuth',
   'django.contrib.auth.backends.ModelBackend',
)

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'your secret id'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'your secret key'

project_name/urls.py

urlpatterns = patterns('',
...
url('', include('social.apps.django_app.urls', namespace='social')),
url('', include('django.contrib.auth.urls', namespace='auth')),
...
)

Ensuite, nous éditerons le modèle. Cette fois, nous remplacerons la connexion / l'enregistrement de l'utilisateur sur l'écran de gestion par l'authentification Google.

Tout d'abord, créez un écran de connexion pour l'écran de gestion et remplacez-le par celui existant.

Créez templates / admin / login.html et sélectionnez ce fichier Veuillez copier et coller. Réécrivez le bloc de contenu dans le fichier copié. (À l'origine, il semble remplacer login.html pas entièrement, mais partiellement, mais je ne sais pas, donc je remplace l'ensemble ...)

{% block content %}
  <center>
  {% if user and not user.is_anonymous %}
     <h1><a href="{% url 'auth:logout' %}?next={{ request.path }}">Logout</a></h1>
  {% else %}
      <h1><a href="{% url 'social:begin' 'google-oauth2' %}?next={% url 'admin:index' %}">Login with Google</a></h1>
  {% endif %}
      </center>
{% endblock %}

C'est tout pour la procédure. Exécutons-le et vérifions-le. Vous trouverez ci-dessous une liste de points faciles à trébucher.

login.html ne peut pas être remplacé

Invalid ~ est affiché par l'authentification Google

C'est tout. Puisque je l'ai écrit après l'avoir créé, il peut y avoir des omissions. Je vous serais reconnaissant si vous pouviez me faire savoir si vous remarquez quelque chose.

Autre

Validez par adresse email

Ajoutez ce qui suit à settings.py et c'est OK SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS = ['email address'] Ajoutez ce qui suit si vous souhaitez valider avec le domaine de l'adresse e-mail au lieu de l'adresse e-mail SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS = ['domain']

Activer le personnel et le superutilisateur par défaut

Il est difficile de se connecter socialement à l'administrateur et de ne rien voir, donc je voulais activer is_staff et is_superuser depuis le début, donc j'ajouterai ma propre fonction au pipeline. Cette fois, nous réécrirons is_staff et is_superuser de l'utilisateur créé.

project_name/custome_pipeline.py

def set_superuser(user, *args, **kwargs):
    user.is_staff = True
    user.is_superuser = True
    user.save()

Après cela, ajoutez ce qui suit à settings.py. Le but est d'insérer le processus créé après create_user

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_user',
    'social.pipeline.user.get_username',
    'social.pipeline.user.create_user',
    'project_name.custom_pipeline.set_superuser',  #Chemin vers la fonction préparée
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details'
)

référence

Recommended Posts

Authentifier Google avec Django
Internationalisation avec Django
CRUD avec Django
Django 1.11 a démarré avec Python3.6
Télécharger des fichiers avec Django
Résumé du développement avec Django
Sortie PDF avec Django
Sortie Markdown avec Django
Utiliser Gentelella avec Django
Twitter OAuth avec Django
Premiers pas avec Django 1
Envoyer des e-mails avec Django
Téléchargement de fichiers avec django
Utilisez LESS avec Django
La mutualisation mécanise avec Django
Utiliser MySQL avec Django
Django à partir d'aujourd'hui
Premiers pas avec Django 2
Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
Lancez-vous avec Django! ~ Tutoriel ⑤ ~
Tester les logiciels embarqués avec Google Test
Environnement de site Web de configuration minimale avec django
Créer une API avec Django
Essayez Google Mock avec C
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Déployer Django sans serveur avec Lambda
Python3 + Django ~ Mac ~ avec Apache
Étudiez Python avec Google Colaboratory
Premiers pas avec Python Django (1)
Créer une page d'accueil avec django
À propos de l'apprentissage avec Google Colab
Lancez-vous avec Django! ~ Tutoriel ④ ~
Premiers pas avec Python Django (4)
Créer une application Web avec Django
Premiers pas avec Python Django (3)
Combinez Fast API avec Django ORM
Lancez-vous avec Django! ~ Tutoriel ⑥ ~
Utilisez Django pour enregistrer les données de tweet
Effectuer le cryptage AES avec DJango
Introduction à Python Django (6)
Combinez deux images avec Django
Montez Google Drive avec google-drive-ocamlfuse
Accédez à Google Drive avec Python
Premiers pas avec Django avec PyCharm
Essayez OpenCV avec Google Colaboratory
Web en temps réel avec les chaînes Django
Traduire - Aide de PHP_UML avec Google Traduction
Suppression de double envoi avec Django
Framework Django REST avec Vue.js
Utilisez prefetch_related commodément avec Django
Premiers pas avec Python Django (5)
Connectez-vous avec Django Rest Framework
Qiita API Oauth avec Django
Développement piloté par les tests avec Django Partie 3
recharger dans le shell django avec ipython
Étapes pour développer Django avec VSCode
Développement piloté par les tests avec Django Partie 4
Charger les modules Django avec un interpréteur
Configurer la connexion sociale avec Django