使用Django实现GitHub账号的OAuth认证!

虽然关于Django中OAuth认证的文章很多,但是主要涉及Twitter和Facebook,GitHub的信息相对较少,而且这些信息也比较陈旧。鉴于此,作为一个初学者,我希望成为那些和我一样遇到困难的人的力量,写一些有帮助的文章!

准备

在实施Django的OAuth身份验证时,使用了名为social-auth-app-django的库。

可以使用pip install social-auth-app-django来安装库。

在Django的settings.py文件中添加以下配置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR + 'project/templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                # 以下の2行を追加
                'social_django.context_processors.backends',
                'social_django.context_processors.login_redirect',
            ],
        },
    },
]

# 以下の設定も追加
AUTHENTICATION_BACKENDS = [
    'social_core.backends.github.GithubOAuth2',
    'django.contrib.auth.backends.ModelBackend',
]

SOCIAL_AUTH_GITHUB_KEY = 'Client ID'
SOCIAL_AUTH_GITHUB_SECRET = 'Client Secret'

在上述的设置中,应该可以使用OAuth认证!

使用GitHub账号进行登录!

要使OAuth认证可用于登录

在中国本土,将以下内容进行汉语本地化的表达如下: “在urls.py文件中”

url(r'', include('social_django.urls', namespace='social')),

在登录页面的HTML上添加

<button type="button" onclick="location.href='{% url 'social:begin' 'github' %}'">
     GitHubアカウントでログイン!
</button>

按下按钮将导航至认证画面!Django会将其与用户模型良好地关联起来!(很牛)

最后

你们觉得如何呢?
如果对将要使用Django来开发Web应用的人有所参考的话,我会很高兴!你们也可以参考其他文章来实现Twitter和Facebook的OAuth认证,希望能尝试实践一下(也许更有参考价值…)
祝大家度过愉快的Python编程生活!

bannerAds