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

DjangoでGitHub OAuth認証を有効にする方法

多くの開発者向けWebサイトでは、GitHubのソーシャル認証が導入されており、ユーザーにとって非常に便利な機能です。この記事では、Djangoで構築したWebサイトにGitHub認証を追加する手順を、初心者にもわかりやすく解説します。

1. GitHubでOAuthアプリケーションを作成する

まず、https://github.com/settings/developers/ にアクセスしてOAuthアプリケーションを作成します。作成時に、以下の2つのURLを登録してください。

  • https://127.0.0.1:8000/
  • https://127.0.0.1:8000/accounts/github/login/callback

登録が完了すると、「Client ID」と「シークレットキー(Client Secret)」が発行されます。これらは後ほど使用するので、必ず控えておきましょう。それでは、コーディング作業に移ります。

2. django-allauthライブラリのインストール

以下のコマンドで django-allauth ライブラリをインストールします。

pip install django-allauth

3. settings.py の設定

settings.py に以下のコードを追加します。

INSTALLED_APPS = [
    ##################
#
#
#
#

    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.github',
    'githubAuthentication'
]

SITE_ID = 1
AUTHENTICATION_BACKENDS= [
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend'
]

LOGIN_REDIRECT_URL="https://github.com"

INSTALLED_APPS には必要なライブラリを追加し、GitHub用のデフォルト認証バックエンドを設定しています。さらに、ログイン成功時のリダイレクト先URL(LOGIN_REDIRECT_URL)も指定しています。

4. プロジェクトのurls.pyを編集する

プロジェクト直下の urls.py を以下のように編集します。

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

urlpatterns = [
    path('admin/', admin.site.urls),

    # allauth用のモジュールパス(そのままコピー)
path('accounts/', include('allauth.urls')),

# 自分のアプリのパス
path('', include("githubAuthentication.urls"))
]

ここでは、GitHubログインを有効化するためにallauthライブラリが必要とするデフォルトパスを追加しています。もう1つは、自分で作成したアプリへのパスです。

5. 管理画面でソーシャルアプリケーションを登録する

次に、https://localhost:8000/admin にアクセスし、管理画面の「Social applications(ソーシャルアプリケーション)」を開きます。

そして、新しいアプリケーションを追加します。

DjangoでGitHub OAuth認証を有効にする方法

先ほど控えておいた Client IDシークレットキー を貼り付けます。「Name」欄にはアプリケーション名を入力し、プロバイダーとして github を選択してください。

「Sites」セクションで example.com をクリックし、矢印ボタンで右側に移動させてから保存します。これで、GitHubがDjangoプロジェクトの認証バックエンドとして登録されました。

6. フロントエンド(テンプレート)の作成

templates フォルダ内に home.html を作成し、以下のコードを記述します。

<!DOCTYPE html>
<html>
    <head>
      <title>tut</title>
    </head>
    <body>
      {% load socialaccount %}
      {% providers_media_js %}
<a href="{% provider_login_url 'github' method='js_sdk' %}?next=https://github.com">login with github</a>
    </body>
</html>

ここでは、JavaScriptを読み込み、フロントエンド側で allauth ライブラリを使用できるようにしています。<a> タグには、GitHubのログインページへ遷移するためのリンクを設定しています。

7. ビューとURLの設定

views.py は以下のように記述します。

from django.shortcuts import render

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

ここでフロントエンドのテンプレートをレンダリングしています。

続いて、アプリ側の urls.py を以下のように設定します。

from django.urls import path,include
from . import views
urlpatterns = [
    path('',views.home, name="Home" ),

]

これでURLのルーティングとビューの紐付けが完了しました。

動作確認

以上ですべての設定が完了しました。開発サーバーを起動して、実際の出力を確認してみましょう。

出力結果


DjangoでGitHub OAuth認証を有効にする方法

  1. Djangoのモデルインスタンスに翻訳機能を追加する方法

    この記事では、Djangoの任意のモデルインスタンスに対して翻訳データを追加する方法を解説します。ID、名前、引用文、セリフなどのデータを保存し、それを複数の言語で表示したいケースはよくあります。通常はデータベース周りで多くの実装が必要になりますが、今回はわずか数行の設定で同じ結果を実現する方法をご紹介します。まずDjangoプロジェクトとアプリを作成し、urlsの設定やINSTALLED_APPSへのアプリ追加など、基本的なセットアップを行ってください。今回の作業では、views.py、urls.py、HTMLファイルにはほとんど手を加えません。主に扱うのはsettings.py、admin

  2. DjangoでMoneyフィールド(金額フィールド)を追加する方法を徹底解説

    Webサイトを開発していると、給与や料金、収入といった金額に関するデータを扱う場面がよくあります。Djangoには標準で整数型のフィールドが用意されていますが、金額データの処理には必ずしも適していません。そこで便利なのが、サードパーティ製ライブラリ「django-money」です。このライブラリを使えば、通貨情報付きのMoneyフィールドをモデルに簡単に追加できます。 この記事では、django-moneyを使ってDjangoモデルに金額フィールドを実装する手順を、サンプルコードとともにわかりやすく解説します。 事前準備:プロジェクトとアプリの作成 まずはDjangoプロジェクトとアプリを作