Python
 Computer >> コンピューター >  >> プログラミング >> Python

DjangoでGoogleログインを実装する方法|django-allauthを使った手順を解説

多くの開発者向けサイトでは、Googleのソーシャル認証(ソーシャルログイン)が導入されており、ユーザーにとって非常に便利な機能です。本記事では、DjangoプロジェクトにGoogleログイン機能を実装する手順を、django-allauthライブラリを使って詳しく解説します。

事前準備:Google Cloud Consoleでの設定

まず、Google側でOAuth認証のための準備を行います。

  1. Google Cloud Consoleにアクセスし、新しいプロジェクトを作成します。
  2. 「OAuth同意画面」に移動し、必要な情報を入力して「保存して続行」をクリックします。
  3. 「認証情報」ページを開き、「認証情報を作成」→「OAuthクライアントID」を選択します。

次に、アプリケーションの種類として「ウェブアプリケーション」を選択し、以下の2つのURLを登録します。

  • https://127.0.0.1:8000/(承認済みのJavaScript生成元)
  • https://127.0.0.1:8000/accounts/google/login/callback/(承認済みのリダイレクトURI)

設定が完了すると、クライアントIDクライアントシークレットが発行されます。これらは後の工程で使用するため、安全な場所に保管しておきましょう。

Djangoプロジェクトの実装例

それでは、Djangoプロジェクトとアプリを作成し、実際にコードを書いていきます。

settings.py の設定

SITE_ID = 1
LOGIN_REDIRECT_URL = "/"

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    "django.contrib.sites", # ← 追加
    "allauth", # ← 追加
    "allauth.account", # ← 追加
    "allauth.socialaccount", # ← 追加
    "allauth.socialaccount.providers.google",
    "googleauthentication" # アプリ名。任意の名前でOK
]
SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'SCOPE': [
            'profile',
            'email',
        ],
        'AUTH_PARAMS': {
            'access_type': 'online',
        }
    }
}

# ファイルの末尾に追加
AUTHENTICATION_BACKENDS = (
    "django.contrib.auth.backends.ModelBackend",
    "allauth.account.auth_backends.AuthenticationBackend",
)

ここでは、ログイン成功後のリダイレクトURLを定義しています。INSTALLED_APPSには、認証に必要なallauth関連のアプリを追加しました。SOCIALACCOUNT_PROVIDERSでは、ログインに使用するプロバイダー(ここではGoogle)を指定し、ユーザーのどのデータ(プロフィールとメールアドレス)を保存するかを定義しています。

プロジェクトの urls.py の設定

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path("accounts/", include("allauth.urls")), # 最も重要
    path('', include("googleauthentication.urls")) # アプリのURL
]

「accounts/」パスは、Googleログインを有効化するためにallauthライブラリが提供するデフォルトのルーティングです。もう1つは、作成したアプリのURL設定を読み込むためのものです。

アプリの urls.py の設定

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home),
]

ここではルートURLに対してビューを割り当てています。

views.py の設定

from django.shortcuts import render

# Create your views here.
def home(request):
    return render(request, 'home.html')

シンプルにフロントエンドのテンプレートを表示するだけのビューです。

テンプレートの作成

アプリのメインディレクトリにtemplatesフォルダを作成し、その中にhome.htmlファイルを以下の内容で作成します。

<!DOCTYPE html>
<html>
    <head>
        <title>Google Registration</title>
    </head>
    <body>
        {% load socialaccount %}
        <h1>My Google Login Project</h1>
        <a href="{% provider_login_url 'google' %}?next=/">Login with Google</a>
    </body>
</html>

{% load socialaccount %}タグでallauthライブラリをフロントエンドに読み込んでいます。<a>タグのhref属性には、provider_login_urlテンプレートタグで生成されるGoogleログインページへのリンクを設定しています。

マイグレーションとスーパーユーザーの作成

ターミナルで以下のコマンドを実行します。

python manage.py makemigrations
python manage.py migrate

次に、管理画面にアクセスするためのスーパーユーザーを作成します。

python manage.py createsuperuser

管理画面での最終設定

サーバーを起動し、管理画面(https://127.0.0.1:8000/admin/)にアクセスします。

  1. Sites(サイト)セクションを開き、ドメイン名と表示名に「https://127.0.0.1:8000」を入力してサイトを追加します。
  2. Social applications(ソーシャルアプリケーション)セクションで「追加」をクリックし、プロバイダーに「Google」を選択します。先ほど取得したクライアントIDとシークレットキーを入力し、「選択されたサイト」で先ほど追加したサイトをチェックします。

DjangoでGoogleログインを実装する方法|django-allauthを使った手順を解説

これで、GoogleがDjangoプロジェクトの認証バックエンドとして正式に登録されました。すべての設定が完了したので、動作確認に進みましょう。

実行結果

サーバーを起動してトップページにアクセスすると、「Login with Google」というリンクが表示されます。リンクをクリックするとGoogleの認証画面に遷移し、Googleアカウントで認証を行うと、自動的にホームページへリダイレクトされてログインが完了します。

DjangoでGoogleログインを実装する方法|django-allauthを使った手順を解説

  1. Google Chromeがクラッシュ・フリーズする原因と解決策7選

    Google Chromeのクラッシュ・フリーズを解決する方法この記事では、Google Chromeがクラッシュする、応答しなくなる、フリーズするといった問題の具体的な解決策を、7つのステップに分けて詳しく解説します。ウェブブラウザとGoogle Chromeについてウェブブラウザは、ユーザーがインターネット上の情報へアクセスするために欠かせないソフトウェアです。「インターネットブラウザ」や単に「ブラウザ」と呼ばれることもあります。代表的なものには、Microsoft Internet Explorer(現Microsoft Edge)、Google Chrome、Mozilla Firef

  2. Androidで「Google Play認証が必要です」エラーを解決する8つの方法

    Google Playストアは、Androidスマートフォンでアプリやゲームをダウンロードする際に利用される、最も一般的かつ信頼性の高い公式プラットフォームです。無料アプリから有料アプリまで、安全に入手できるのが大きな魅力です。しかし、Playストアアプリの利用中に「認証が必要です。Googleアカウントにログインしてください」というエラーが表示され、アプリをインストールできなくなることがあります。本記事では、このエラーを迅速に解決するための具体的な対処法を詳しく解説します。 Androidで「Google Play認証が必要です」エラーを解決する方法 まず、Androidデバイスでこのエラ