8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DjangoでラクラクTwitterログイン認証機能作ってみた

Last updated at Posted at 2020-03-01

背景

自分の作成中のwebアプリにTwitter連携したログイン機能が欲しかったので導入してみました。

環境

  • Python==3.7
  • Django==2.2.5
  • django-allauth==0.41.0

最初に悩んだこと

pythonでDjangoにTwitter認証機能を導入するには主に2パターンです。

django-allauth
social-auth-app-django

のどちらかを導入することでお手軽できます。

しかしそれぞれの良い点悪い点もありまして、

django-allauth social-auth-app-django
TwitterのAPI Keyの場所 データベース settingファイル読込
ログイン用テンプレート ある ない

こんな感じになっています。

特にAPI Key
DB管理だと非常にお手軽なものの、DBを作り直したとき再度登録する手間がありますからね。

ただ今回はとにかく早く実装を試してみたかったのもあり、テンプレートがあるdjango-allauthを選択しました。

やり方

事前準備 APIKey入手

まずは事前に[Twitter] (https://developer.twitter.com/)にてAPIKeyを取得します。

基本情報登録(認証に何日かかかるのはガマン)
→アプリ登録
という流れの通りにすすめていくのですが、注意点としてCallbackUrlを正しく設定する必要があります。

CallbackUrlとは

簡単に言うと
「ログインしたあとの遷移先」
です

スクリーンショット 2020-03-01 15.58.03.png

これがないとTwitterのAPIはリダイレクト先を失ってエラーを出してしまいます。
ここでは

http://127.0.0.1:8000/accounts/twitter/login/callback/

と入力してあげると問題ないでしょう。

ここで、手に入れたAPIKey、APISecretを用いて今後の作業を進めて行きます。

実装

まずは

pip install django-allauth

でモジュール追加。
その後settings.pyに情報を追加していきます

settings.py
INSTALLED_APPS = [
# 既存のものはそのまま
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.twitter',
]

SITE_ID = 1
LOGIN_REDIRECT_URL = 'home'
ACCOUNT_LOGOUT_REDIRECT_URL = '/accounts/login/'

特に今回はコイツが大事

'allauth.socialaccount.providers.twitter',

これでTwitterが認証に使えるようになります。今回は解説しませんが、他にも

'allauth.socialaccount.providers.github',

と追加するとgithubログイン認証で使えるようになります。お手軽ぅ❗

admin情報追加

python manage.py migrate #DBマイグレート
python manage.py createsuperuser #admin用ユーザ作成

でDBの準備をした後は自分の環境で
http://127.0.0.1:8000/admin/
へログイン

すると
スクリーンショット 2020-03-01 16.41.49.png

外部アカウントが出来ていますね。

Social applicationsからTwitterの情報を登録出来ます。

スクリーンショット 2020-03-01 15.50.33.png

Client idとSecret keyはTwitterデベロッパーで手に入れたものをコピペしましょう。

ログインしてみよう

http://127.0.0.1:8000
にアクセス。

スクリーンショット 2020-03-01 16.47.56.png

Sign in

スクリーンショット 2020-03-01 16.48.24.png

このようにログイン画面が表示されるようになりました。
ここでTwitterを押すと

スクリーンショット 2020-03-01 15.49.14.png

よく見る認証画面が出てきて

スクリーンショット 2020-03-01 16.50.29.png

ログイン成功❗

さらにadminを確認すると

スクリーンショット 2020-03-01 16.52.03.png

※Token等は隠してます

Twitterのトークン情報を入手出来ているのが確認できました😆

まとめ

このように案外シンプルに実装出来ます!
アプリなどにTwitter認証があるだけでユーザの登録の敷居が低くなりやすいので、興味が出た方はぜひお試しを!

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?