スポンサーリンク

【Django】Googleアカウントログインを許可する方法

【Django】Googleアカウントログインを許可する方法

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なども実装できますので、ぜひお試しください!!

コメント