Django Rest Frameworkでソーシャルログインを実装する
Django Rest Framework(以降DRF)でソーシャルログインを実装したい時の話
色々試したものの上手いこと設定出来ず手こずったのでまとめ
DRFのドキュメントにあるソーシャルログインを試しました.
今回はGithubでテストしました.
環境
- Python 3.7.3
- パッケージ
設定
DRFが動くところまでは済んでる前提です.
上記のパッケージのインストール
settings.pyにインストールしたアプリを追加
1INSTALLED_APPS = (
2 ...,
3 'django.contrib.sites', # 設定してない場合追加しておく
4 'rest_framework',
5 'rest_framework.authtoken',
6 'rest_auth'
7 'allauth',
8 'allauth.account',
9 'allauth.socialaccount',
10 'allauth.socialaccount.providers.github',
11)
12SITE_ID = 1 # 同上
データベースに反映します
Github用の認証ビューを作ります
1class GithubLogin(SocialLoginView):
2 adapter_class = GitHubOAuth2Adapter
3 callback_url = "Githubのアプリ側で設定したコールバックURLと合わせる"
4 client_class = OAuth2Client
py
適当なURLと紐づけます
Djangoの管理画面に入ってSocial appsから新しくGithubを追加します.
名称は小文字で設定します.
その他はGithubで設定した値をコピペします.
今回フロントはないのでGithubのコールバックは適当なURLにしておきました.
https://github.com/login/oauth/authorize?client_id=[作成時のクライアントID]&scope=login
にアクセスするとGithub上でログインし,アクセス許可を出すと設定したコールバックURLに向かって飛ばされます
例)http://localhost:8000/auth/complete/github/?code=01234abcde
この末尾についているcodeを先程設定したビューに投げつけるとソーシャルログイン出来ます.