django allauthの使い方
インストール
pip install django-allauth
https://django-allauth.readthedocs.io/en/latest/installation.html
allauthの使い方イメージ
allauthをインストールすると、urls.py, views.pyや各種テンプレートがインストールされる。INSTALLED_APPSにallauthを追記すると、djangoのプロジェクトにurls.py, views.py, forms.py, templatesその他が追加される。だからこれらを利用するために各種ファイルをインポートして利用していく。
allauthのurls.pyさえインポートすればよい
allauth/urls.pyを見ればわかる通り、urls.pyにはviewsをインポートしている。views.pyファイルにはテンプレートファイルやフォームファイルを利用することが規定されている。したがって、urls.pyさえプロジェクトの中でインポートすれば、allauthの機能を享受することができる。
https://github.com/pennersr/django-allauth/blob/master/allauth/account/urls.py
Facebookログイン認証を実装する
https://developers.facebook.com/docs/facebook-login/web
利用するためには以下のものが必要らしい。
- Facebook開発者アカウント
- 基本設定が構成済みの登録済みFacebookアプリ
- Facebook JavaScript SDK
Javascript SDKに関しては、django-allauthがあるので使うことはないと思われる。
参考:https://medium.com/@gajeshbhat/django-allauth-social-login-tutorial-ad021c24d666
Facebookの開発者用アカウントを作成し、開発者用ページからFacebookログインを設定する。
作成したアプリから、App Id とapp secretをコピーする。貼り付け先はdjangoのadminのsocial accountsのSocial applicationsである。
Client idにApp Idを貼り付ける。Secret keyにapp secretを貼り付ける。またproviderを選択形式でFacebookを選ぶためには、settings.pyのINSTALLED_APPSに'allauth.socialaccount.providers.facebook'を追加しておく必要がある。追加しないで試してみると、選択形式ではなく、文字列を入力する形式となって正常動作しない。
基本的にSocialapplicationsでオブジェクトを作成したら、Facebookアカウントによるログインが可能になる。テンプレートをイジる必要はない。しかしながらallauthのテンプレートを使わず、自前のログイン、サインアップテンプレートを使う場合には、テンプレートに特定のテンプレートタグ及びログイン等の逆引きurlを記載する必要がある。