DjangoでWebアプリを開発していくときにGoogleアカウントでのログイン機能があるとアカウント作成の手間が減ったりといろいろ便利ですよね。
今回はGoogleアカウントでのログインを可能にする方法を解説していきたいと思います。
GoogleAPIのアクセスキーの取得
1、Google API Consoleへ移動
2、「作成」ボタンを押してプロジェクトを作成
3、プロジェクト名を入力(自分が分かれば何でもいいです)
4、「作成」ボタンをクリックしてプロジェクトを作成
5、ライブラリ選択画面で「Google+ API」を検索して有効化
6、「三本線のハンバーガーメニュー」→「APIとサービス」→「認証情報」に移動
7、OAuth同意画面タブから、ユーザーに表示するサービス名を記入
8、認証情報タブにて、[認証情報を作成]->[OAuthクライアントID]を押します。
9、「ウェブアプリケーション」を押した後、自由に名前を決めて、承認済みのリダイレクトURIを次のように設定し、「作成」を押します。
http://127.0.0.1:8000/auth/complete/google-oauth2/
本番サーバーではドメイン部分を変更してください。
social-auth-app-djangoのインストールと設定方法
social-auth-app-django==4.0.0(21年1月時点最新版)をインストール
pip install social-auth-app-django
インストールできましたら、各種必要な設定を追加していきます。
ちなみに公式ドキュメントはこちらです。
INSTALLED_APPSにsocial_djangoを追加
INSTALLED_APPS = (
...
'social_django',
...
)
migrateを実行
python manage.py migrate
AUTHENTICATION_BACKENDSに設定追加
AUTHENTICATION_BACKENDS = (
'social_core.backends.open_id.OpenIdAuth',
'social_core.backends.google.GoogleOpenId',
'social_core.backends.google.GoogleOAuth2',
'social_core.backends.google.GoogleOAuth',
'social_core.backends.twitter.TwitterOAuth',
'social_core.backends.yahoo.YahooOpenId',
...
'django.contrib.auth.backends.ModelBackend', #←これは必須
)
SOCIAL_AUTH_URL_NAMESPACEにsocialを追加
SOCIAL_AUTH_URL_NAMESPACE = 'social'
TEMPLATESに設定追加
TEMPLATES = [
{
...
'OPTIONS': {
...
'context_processors': [
...
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect',
...
]
}
}
]
urls.pyに設定追加
urlpatterns = patterns('',
...
url('', include('social_django.urls', namespace='social'))
...
)
※プロジェクトのurls.pyです
外部アカウント認証への導線を追加
<a href="{% url "social:begin" "google-oauth2" %}">Googleでログイン</a>
※ログイン画面など自由に追加してください
ここまでできましたら動作すると思いますので、確認してみてください。
ちなみにlocalhostからアクセスしているとGoogleAPIで弾かれますので、127.0.0.1からアクセスするようにしましょう。
まとめ
かなりお手軽にGoogleからの外部ログインが実装できましたね。
他にもFacebookやTwitterなども実装できますので、ぜひお試しください!!
コメント