Django-OAuth
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Django-OAuth
OAuth를 이용하여 Social Login을 붙여 가입없이 서비스를 이용할 수 있다.
Django에서 이러한 Social Login을 이용하기 위한 라이브러리르 중 django-allauth package를 이용하여 구현해보려고 한다.
Installation
django-allauth
pip install django-allauth
django-allauth 패키지를 설치해준다.
settings.py
# Specify the context processors as follows: TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ # Already defined Django-related contexts here # `allauth` needs this from django 'django.template.context_processors.request', ], }, }, ]
OPTIONS 에 'django.template.context_processors.request', 를 추가해준다.
AUTHENTICATION_BACKENDS 를 추가해준다.
AUTHENTICATION_BACKENDS = ( # Needed to login by username in Django admin, regardless of `allauth` 'django.contrib.auth.backends.ModelBackend', # `allauth` specific authentication methods, such as login by e-mail 'allauth.account.auth_backends.AuthenticationBackend', )
INSTALLED_APP에 추가된 app을 입력한다.
allauth.socialaccount.providers는 내가 원하는 providers를 넣어준다.
나는 facebook을 이용해서 할 예정이다.
INSTALLED_APPS = ( ... 'django.contirb.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', # include the providers you want 'allauth.socialaccount.providers.facebook',
SITE_ID = 1 도 추가해준다.
SITE_ID = 1
urls.py
path('accounts/', include('allauth.urls')),
urlpatterns에 추가해준다.
Provider
settings.py
맨 아래에 SOCIALACOUNT_PROVIDERS 를 추가해준다.
SOCIALACCOUNT_PROVIDERS = { 'facebook': { 'METHOD': 'oauth2', 'SDK_URL': '//connect.facebook.net/{locale}/sdk.js', 'SCOPE': ['email', 'public_profile', 'user_friends'], 'AUTH_PARAMS': {'auth_type': 'reauthenticate'}, 'INIT_PARAMS': {'cookie': True}, 'FIELDS': [ 'id', 'email', 'name', 'first_name', 'last_name', 'verified', 'locale', 'timezone', 'link', 'gender', 'updated_time', ], 'EXCHANGE_TOKEN': True, 'LOCALE_FUNC': lambda request: 'ko_KR', 'VERIFIED_EMAIL': False, 'VERSION': 'v2.12', } }
METHOD 는 js_sdk 와 oauth2 가 가능한데 기본 설정은 oauth2 이다.
는 와 가 가능한데 기본 설정은 이다. VERSION 은 문서에 2.12로 나와있지만 최신 버전은 아니다. ( 도큐먼트에 나온대로 구현해보겠다. )
Facebook for developer
Facebook for developers 에 접속하여 가입, 앱 등록한다.
앱을 등록하게 되면 유효한 OAuth 리디렉션 URI 를 추가해 주어야 사용할 수 있다.
이때, http://로 사용하던 것을 https://로 바꿔주어야 한다.
그러기 위해 OPENSSL, STUNNEL을 이용하여 key와 cert를 받고 ssl server로 실행해준다. ( 다음 게시물로 올리겠다. )
settings.py
sslserver 를 사용하기 위해 라이브러리를 설치해준다.
pip install sslserver
INSTALLED_APP 에 sslserver 를 추가해준다.
facebook 로그인을 통하여 로그인 했을 때의 리다이렉트 하는 곳을 main화면으로 설정해 주기 위해 settings.py에 아래와 같이 설정해준다.
LOGIN_REDIRECT_URL = '/'
login.html
{% load socialaccount %} hello world {% if user.is_authenticated %} {{ user }}님이 로그인중입니다. {% for account in user.socialaccount_set.all %} {% comment %} show avatar from url {% endcomment %} {{ account.provider }} account data UID: {{ account.uid }} Username: {{ account.extra_data.username }} First Name: {{ account.extra_data.first_name }} Last Name: {{ account.extra_data.last_name }} Dashboard Link: {{ account.extra_data.link }} {% empty %} you haven't any social account please {% endfor %} {% endif %} 로그인 페이스북 로그인 로그아웃 회원가입
html화면을 만들어서 페이스북 로그인을 확인할 수 있다.
from http://sssunda.tistory.com/216 by ccl(A)
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기