使用 Django 来实现社交登录功能

索引

    1. 通用设置

 

    1. 使用谷歌账号进行认证功能

 

    使用Facebook账号进行认证功能

共同设置

安装图书馆。

$ pip install social-auth-app-django

编辑settings.py文件。

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '[クライアントID]'  ?これを追加
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '[クライアント シークレット]' ?これを追加

INSTALLED_APPS = [
    ...省略...
    'social_django',  ?これを追加
]

MIDDLEWARE_CLASSES = [
    ...省略...
    'social_django.middleware.SocialAuthExceptionMiddleware',  ?これを追加
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            PROJECT_DIR.child('templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                ...省略...
                'social_django.context_processors.backends',  ?これを追加
                'social_django.context_processors.login_redirect', ?これを追加
            ]
        },
    },
]

执行迁移。

$ python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, social_django
Running migrations:
  Applying social_django.0001_initial... OK
  Applying social_django.0002_add_related_name... OK
  Applying social_django.0003_alter_email_max_length... OK
  Applying social_django.0004_auto_20160423_0400... OK
  Applying social_django.0005_auto_20160727_2333... OK
  Applying social_django.0006_partial... OK
...

我們將編輯urls.py文件來管理整個項目。

urlpatterns = [
    ...省略...
    path('oauth/', include('social_django.urls', namespace='social')),   ?これを追加
]

在Google账户中的认证功能

スクリーンショット 2020-06-27 17.07.59.png
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = ''  ?ここにクライアントIDを追加
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '' ?ここにクライアントシークレットを追加
...省略...
AUTHENTICATION_BACKENDS = (
    'social_core.backends.open_id.OpenIdAuth',  ?これを追加
    'social_core.backends.google.GoogleOpenId',  ?これを追加
    'social_core.backends.google.GoogleOAuth2',  ?これを追加
    'django.contrib.auth.backends.ModelBackend',  ?これを追加
)

以下是如何在HTML中创建登录链接的方式。

...省略...
<a href="{% url 'social:begin' 'google-oauth2' %}">Googleでログイン</a>
...省略...

3. 通过Facebook账户进行身份验证功能

目前正在制作中。(由于正在实施中,稍后会添加)

bannerAds