💻

Django で Twitter 認証を実装する

2021/04/27に公開


この記事では、python-social-auth(social-auth-app-django) と呼ばれる、ライブラリを使用したSNS認証の実装に関して紹介しています。

django の基本的な部分の説明は省いていますので、基本的な部分を知りたい方は他の記事やドキュメントを参考にしてください。

ライブラリのインストール

まずはライブラリをインストールしましょう。今回は 4.0.0 を使用します。

pip3 install social-auth-app-django

状況に応じてバージョン指定をしてください。

Django プロジェクトの立ち上げ

django のプロジェクトを作成します。下記コマンドを入力してください。

pip3 install django
django-admin startproject config .

次に、settings.py の INSTALLED_APP に python-social-auth を使えるように記述します。

INSTALLED_APP = [
	...
	'social_django',
	...
]

settings.py に AUTHENTICATION_BACKENDS と TWITTER_AUTH_API_KEY, TWITTER_AUTH_API_SECRET を追加します。今回は twitter 認証のみを実装するのでこれだけで大丈夫です。

AUTHENTICATION_BACKENDS = [
    'social_core.backends.twitter.TwitterOAuth',
    'django.contrib.auth.backends.ModelBackend',
]

SOCIAL_AUTH_TWITTER_KEY = 'hogehoge'
SOCIAL_AUTH_TWITTER_SECRET = 'hogehoge'

プロジェクトフォルダの urls.py を編集します。今回は config/urls.py です。 include のインポートも忘れずに行ってください。

...
from django.urls import include, path
urlpatterns = [
	...
	path('', include('social_django.urls', namespace='social')),
	...
]

このようにしたらルーティングの設定が可能です。後は、twitter ログインを実装したい場所に下記リンクを設置するだけです。

<a onclick="location.href='{% url 'social:begin' 'twitter' %}'" class="btn-push">Twitterログイン</a>

以上で実装できました!

Discussion