diadia

興味があることをやってみる。自分のメモを残しておきます。

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

利用するためには以下のものが必要らしい。

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である。

f:id:torajirousan:20191127165037p:plainClient idにApp Idを貼り付ける。Secret keyにapp secretを貼り付ける。またproviderを選択形式でFacebookを選ぶためには、settings.pyのINSTALLED_APPSに'allauth.socialaccount.providers.facebook'を追加しておく必要がある。追加しないで試してみると、選択形式ではなく、文字列を入力する形式となって正常動作しない。

基本的にSocialapplicationsでオブジェクトを作成したら、Facebookアカウントによるログインが可能になる。テンプレートをイジる必要はない。しかしながらallauthのテンプレートを使わず、自前のログイン、サインアップテンプレートを使う場合には、テンプレートに特定のテンプレートタグ及びログイン等の逆引きurlを記載する必要がある。