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.
La version est celle que j'ai utilisée.
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.
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]
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.
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']
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'
)
Recommended Posts