スポンサードリンク



こんにちは。sinyです。

この記事では、django-social-authを使ってデモ動画のようなソーシャル認証(GoogleのIDを利用)を実装する手順を解説します。

 

認証ボタンのデザインも2種類用意し、本番サービスでも利用できるレベルのテンプレートになっていると思うので参考にして頂ければ幸いです。

完成形のソースコードは以下のGithubリポジトリにあります。

 

事前準備

まず、仮想環境の作成とアクティベート、必要なモジュールのインストールとDjangoプロジェクト、アプリケーションの作成まで完了させましょう。

仮想環境の作成とアクティベート

以下のコマンドを実行して仮想環境をアクティベートしましょう。

 

モジュールのインストール

以下のコマンドを実行してDjango本体とsocial-auth-app-djangoをインストールします。

 

Djangoプロジェクトの作成

今回はconfigという名称のプロジェクトを作成します。

 

アプリケーションの作成


app
という名称のアプリケーションを作成します。

 

Google認証

Googleのユーザ認証でログオンするために必要な クライアントキー と クライアントシークレット を取得します。

以下のGoolge Developers Console サイトにアクセスしましょう。

 ・[プロジェクトの選択] → [新しいプロジェクト] を押します。

「プロジェクト名」を入れて「作成」ボタンを押します。

画面左のナビゲーション→APIとサービス→認証情報を選択します。
「認証情報を作成」ボタンを押し、「OAuthクライアントID]を選択します。
「同意画面を設定」→User Typeは「外部」を選択→作成
アプリ情報で「アプリ名、ユーザサポートメール、デベロッパーの連絡先情報」を入力し「保存して次へ」を3回押します。

再度「認証情報」を選択→「認証情報を作成」→「OAuthクライアントID」を選択します。

アプリケーションの種類で「ウェブアプリケーション」を選択し「承認済みのリダイレクト URI」に「http://127.0.0.1:8000/social-auth/complete/google-oauth2/」を指定し「作成」ボタンを押します。

「クライアントID」と「クライアントシークレット」が生成されるので控えておきましょう。

Djangoソーシャル認証のパラメータ設定

config/settings.pyを開いて以下の設定を追加します。

INSTALLED_APPS

 

MIDDLEWARE

 

TEMPLATES

 

最後に末尾に以下の設定を追加します。

 

SOCIAL_AUTH_GOOGLE_OAUTH2_KEYSOCIAL_AUTH_GOOGLE_OAUTH2_SECRETには自分のキー情報を設定しましょう。

ビューの定義

app/views.pyに以下のコードを定義します。

 

ビューはソーシャル認証画面を表示するためのlogin関数とログオン後の画面を表示するhome関数だけ定義しています。

URLパターンの定義

次にapp/urls.pyを新規に作成し、URLパターンを以下の通り設定します。

 

ログイン用のURLパターンは先ほどビューで定義したlogin関数を呼び出すようにします。

ログアウトについてはDjangoが標準で提供するauth_views.LogoutViewを呼び出すようにします。

また、以下でdjango-social-authの機能を使えるようにしています。

app/urls.pyをincludeする設定をconfig/urls.pyに追加しておきます。

 

以上でURLパターンの定義は完了です。

 

テンプレートの設定

最後にテンプレートを作成します。

まずは必要な静的ファイルを配置します。

sinjorjob / django-social-authをgitcloneした後に、django-social-auth/source/app/static/フォルダを丸ごとappフォルダ直下にコピーします。

次にapp/templatesフォルダを作成し、直下にlogin.htmlとhome.htmlを以下の通し作成します。

login.html

 

認証ボタンのaタグのhref属性に以下を設定することでソーシャル認証画面に飛ぶようになります。

 

今回は以下の2種類の認証ボタンのデザインを用意しています。

home.html

 

ログオン後に遷移するhome.htmlにはログアウト機能をつけるため以下のコードを追加しています。

 

URLパターン(logout)を設定しておくことで、ログアウトボタンを押した際にDjangoが標準で提供するログアウト機能(auth_views.LogoutView.as_view())が呼び出されてログアウトするようになっています。

以上で以下のようなDjangoでソーシャル認証を実装することができます。

以上、「Djangoソーシャル認証を実装する(Google認証)」でした。

 

おすすめの記事