Django-allauth을 활용한 페이스북 회원가입(로그인)
http://django-allauth.readthedocs.io/en/latest/installation.html 라이브러리 활용이 전무해서 처음에 좀 애먹었다. 우선 첫 환경세팅은 공식홈페이지를 보고 따라하는 것이 가정 정확하고 빠르다.
설치하기
pip install django-allauth
settings.py
세 부분을 건들여줘야 한다. (INSTALLED_APPS
, TEMPLATES
, AUTHENTICATION_BACKENDS
) INSTALLED_APPS에는 추가해야 할 앱들이 많기 때문에, +=
를 활용해 아래칸에 따로 만들어줬다.
INSTALLED_APPS +=# Specify the context processors as follows:TEMPLATES =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',...)
만약, 리다이렉트 URL을 설정하고 싶다면 settings.py
에 하단 내용을 추가한다.
ACCOUNT_AUTHENTICATED_LOGIN_REDIRECTS = TrueLOGIN_REDIRECT_URL = "/"ACCOUNT_AUTHENTICATED_LOGOUT_REDIRECTS = TrueACCOUNT_LOGOUT_REDIRECT_URL = "/"
urls.py
urlpatterns =
여기까지 진행했다면 기본 환경세팅이 끝났다. runserver
후에 localhost:8000/accounts/
로 접속해보면 다양한 URL 경로들이 생긴 것을 확인할 수 있다.
페이스북 APP ID, 시크릿 키 등록하기
우선, 페이스북 APP을 생성했고 ID와 시크릿키를 이미 알고있다는 전제하에 다음 내용을 작성하고자 한다. 만약 등록하지 않았다면 https://developers.facebook.com/apps/ 에 들어가 앱 등록을 한다.
admin 사이트 접속하기
admin에 접속하면 우리가 INSTALLED_APPS
에 등록한 django.contrib.site
을 통해서 소셜 앱들을 관리할 수 있게 되었다. 여기서 소셜 계정 - 소셜 애플리케이션에 들어간다.
소셜 어플리케이션 버튼을 눌러 해당 화면으로 들어온다. 여기서 이름
은 마음대로 기입하고, 발급받은 APP ID와 시크릿 키를 기입한다. Sites
에는 우리의 홈페이지 URL을 넣어준다.
링크 url 만들기
우리가 위에서 살펴본 URL 목록들이 있다. 여기서 라이브러리가 구성해놓은 기능들을 마음대로 쓸 수 있다. 거창하게 꾸미지 않고, 간단하게 링크로만 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 dataUID: {{ 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 %}로그인페이스북 로그인로그아웃회원가입
우리가 살펴볼 것은 페이스북이다. 페이스북 로그인을 이용하기 위해서는
{% provider_login_url 'facebook'}
이라는 라이브러리가 제공하는 태그를 활용할 수 있는데, 꼭 HTML 상단에 {% load socialaccount %}
을 붙여줘야 한다.
최종화면
가장 빠르게 django-allauth를 만나보았다. 내가 가장 해맸던 부분은 템플릿 내에서 URL 링크를 정해주는 것이었다.
urlpatterns =
처음에 시키는대로 urls.py
에 위 ^accounts/
라는 내용을 추가했어도, 회원가입 페이지, 로그인 페이지, 로그인 완료 페이지를 내가 직접 구성해야 되는 줄 알았다. 보니까 urls.py
에 추가하는 것만으로 저렇게 많은 URL을 활용할 수 있다는 것이었다.
두번째 난관은 provider
라는 개념이었다. 맨 처음 라이브러리를 이용하는 거였기 때문에, 처음 보는 용어들에 대한 두려움이 있었다.
맨 처음 allauth를 설치할 때, INSTALLED_APPS
에 추가하는 'allauth.socialaccount.providers.facebook'
는 내용이 있다. 내용인즉슨, OAuth
인증을 통해 인증된 고객에게만 우리의 서비스를 제공하는 것이다. 인증을 제공하는 업체가 바로 facebook
인 것이고, 이러한 서비스 업체들을 통틀어 provider
라고 지칭한다.
이를 통해서 회원가입도 즉시 반영되는데, sqlite3
를 켜보면 신기하게도 페이스북 가입 유저를 받고 있는 것을 볼 수 있다.
해당 내용은 아직 공부중이기에 오류가 있을 수도 있고, 이러한 부분은 꼬집어주시면 좋겠다. 따라서 자세한 설명은 할 수 없지만 하단부에 관련 내용을 추가하도록 하겠다.
읽어보면 좋을 것
django-allauth 공식 라이브러리
http://django-allauth.readthedocs.io/en/latest/installation.htmlOAuth와 함께 춤을
OAuth에 대해 이보다 쉽고, 자세하게 설명한 글은 아직 보지 못했다.
'프로그래밍 > Django' 카테고리의 다른 글
[Django] 폼(Form)에서 commit=False의 의미 (1) | 2017.07.29 |
---|---|
[Django] Django allauth 유저 모델 커스텀하기 (0) | 2017.07.22 |
[DJango] AbstractBaseUser vs AbstractUser 비교하기 (0) | 2017.07.15 |
[Django] Django + Celery + Redis 이용하기 (5) | 2017.07.15 |
[Django] Django Rest Framework(DRF) 알아보기 1부 (2) | 2017.07.13 |