DjangoでOAuth認証に関する記事は多いが
- TwitterやFacebookばかりでGitHubの情報が少ない
- 情報が古い
以上の2点からPythonistaを目指す私(初心者)が自分と同じように困っている人たちの力になるべく記事を書く!
準備
DjangoでOAuth認証を実装するに当たってsocial-auth-app-djangoというライブラリを利用した。
$ pip install social-auth-app-django
でライブラリをインストールする。
Djangoのsettings.pyのに以下のように設定を追加する
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に
urls.py
url(r'', include('social_django.urls', namespace='social')),
と追加してログインページのHTMLに
login.html
<button type="button" onclick="location.href='{% url 'social:begin' 'github' %}'">
GitHubアカウントでログイン!
</button>
と記述すればButtonを押すと認証画面にいきます!
あとはDjangoの方でいい感じにUserモデルと紐付けてくれます!(有能)
最後に
いかかがだったでしょうか?
これからDjangoでWebアプリケーションを作る人の参考になれば私を嬉しいです!
同じ要領でTwitterやFacebookのOAuth認証も実装できるので他の記事も参考にしながらぜひ実装して見てください(そっちの方が参考になるかも...)
それではみなさん良いPythonライフを送ってください!