17
4

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 5 years have passed since last update.

DjangoでGitHubのOAuth認証を実装!!

Posted at

DjangoでOAuth認証に関する記事は多いが

  • TwitterやFacebookばかりでGitHubの情報が少ない
  • 情報が古い
    以上の2点からPythonistaを目指す私(初心者)が自分と同じように困っている人たちの力になるべく記事を書く!

準備

DjangoでOAuth認証を実装するに当たってsocial-auth-app-djangoというライブラリを利用した。

$ pip install social-auth-app-djangoでライブラリをインストールする。

Djangoのsettings.pyのに以下のように設定を追加する

settings.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR + 'project/templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                # 以下の2行を追加
                'social_django.context_processors.backends',
                'social_django.context_processors.login_redirect',
            ],
        },
    },
]

# 以下の設定も追加
AUTHENTICATION_BACKENDS = [
    'social_core.backends.github.GithubOAuth2',
    'django.contrib.auth.backends.ModelBackend',
]

SOCIAL_AUTH_GITHUB_KEY = 'Client ID'
SOCIAL_AUTH_GITHUB_SECRET = 'Client Secret'

以上の設定でOAuth認証が使えるはずです!

GitHubアカウントでログイン!

OAuth認証でログイン出来るようにするには

urls.pyに

urls.py
url(r'', include('social_django.urls', namespace='social')),

と追加してログインページのHTMLに

login.html
<button type="button" onclick="location.href='{% url 'social:begin' 'github' %}'">
     GitHubアカウントでログイン!
</button>

と記述すればButtonを押すと認証画面にいきます!
あとはDjangoの方でいい感じにUserモデルと紐付けてくれます!(有能)

最後に

いかかがだったでしょうか?
これからDjangoでWebアプリケーションを作る人の参考になれば私を嬉しいです!
同じ要領でTwitterやFacebookのOAuth認証も実装できるので他の記事も参考にしながらぜひ実装して見てください(そっちの方が参考になるかも...)
それではみなさん良いPythonライフを送ってください!

17
4
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
17
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?