Django Facebook 로그인하는 방법
Django에서는 페이스북, 트위터와 같은 소셜로그인을 쉽게 할 수 있도록 도와주는 라이브러리가 있다.
바로 allauth라는 것인데 이 라이브러리를 사용하면 굉장히 간단하게 소셜로그인을 구현할 수 있다.
공식문서는 http://django-allauth.readthedocs.io/en/latest/installation.html 를 참고하면 된다.
먼저 아래의 명령어로 설치한다.
pip install django-allauth
나는 pipenv를 통해 가상환경에 진입하여 작업하는 상황이므로 pip install대신 pipenv를 사용했다.
사용자에 맞춰 설치해주면 된다.
다음으로 settings.py 파일에 있는 INSTALLED_APPS에 아래의 라인을 추가해준다.
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.facebook',
추가해준 후 makemigrations, migrate를 차례로 진행해준다.
그다음 어드민 패널로 들어가보면 다음과 같이 새로운 패널이 추가된걸 확인할 수 있다.
여기에서 Social applications 옆에 빨간색 네모박스로 표시해놓은 Add버튼을 누른다.
Provider는 Facebook을 고르고 Name은 Facebook으로 한다.
이제 Client id와 Secret key를 적어줘야 한다.
이 Key들은 페이스북 개발자센터에서 발급받을 수 있다.
아래의 주소로 들어간다.
https://developers.facebook.com/
상단에 있는 내앱을 누르면 위처럼 하위메뉴가 등장한다.
아래쪽에 있는 새 앱 추가를 누른다.
표시 이름에 원하는 앱의 이름을 적고 앱 ID 만들기를 누른다.
(참고로 gram, facebook등과 같은 단어는 사용할 수 없다)
이제 생성한 앱으로 들어가서 Facebook Login부분을 설정해줘야 한다.
어떠한 제품을 사용할 것인지 골라줘야한다.
나는 웹을 선택했다.
연결할 주소를 적어줘야 한다.
나는 현재 로컬에서 장고로 작업을 하고 있으므로 localhost:8000으로 적었다.
나중에 실제 제품을 릴리즈할 때 수정해줘야한다.
일단 저렇게 하고 Save를 누른다.
그리고 아래에 있는 계속 버튼을 눌러서 설정을 완료해준다.
그런 다음 설정 - 기본설정으로 들어가면 키를 얻을 수 있다.
다음으로 rest-auth를 설치한다.
설치방법과 세팅방법은 allauth와 비슷하므로 아래의 링크를 참고한다.
https://django-rest-auth.readthedocs.io/en/latest/
설치를 해줬으면 views.py에 아래의 코드를 추가한다.
from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter from rest_auth.registration.views import SocialLoginView class FacebookLogin(SocialLoginView): adapter_class = FacebookOAuth2Adapter
그리고 urls.py에 라우팅을 위한 url도 추가한다.
urlpatterns += [ ..., url(r'^rest-auth/facebook/$', FacebookLogin.as_view(), name='fb_login') ]
이제 액세스 토큰(Access token)을 얻어야 한다.
아래의 주소로 들어간다.
https://developers.facebook.com/tools/accesstoken/
들어가면 위처럼 내가 생성한 앱과 토큰이 나온다.
권한을 부여해야 합니다. 를 클릭하여 활성화 시켜주면 User Token에 토큰이 발급된다.
이제 이 액세스 토큰을 사용하여 로그인을 진행하면 된다.