페이스북으로 로그인하기

JWT 인증을 사용을 간편하게 할 수있게 해준 rest-auth / allauth 라이브러리로
소셜로그인 또한 간편하게 진행 할 수 있다.

INSTALLED_APPS = (
    ...,
    'allauth.socialaccount',
    'allauth.socialaccount.providers.facebook',
)

다음과 같이 allauth.socialaccount를 추가해주고, allauth에서 지원하는 여러가지 provider중 페이스북을 추가한다

추가 한 다음 어드민 페이지에 들어가보면
소셜에 관한 모델이 생성되어 있음을 확인 할 수 있다

소셜 어플리케이션에 페이스북을 추가해준다
클라이언트 아이디와 비밀 키 부분은 페이스북 개발자 페이지에서 앱을 생성하면 생성되는 키이다.
각각 적어주고 sites에 있는 것을 추가 해 준다음 저장한다

# users/views.py

from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter
from rest_auth.registration.views import SocialLoginView

class FacebookLogin(SocialLoginView):
    adapter_class = FacebookOAuth2Adapter

다음과 같이 뷰를 작성하고 url을 추가한다
urlpatterns += [
    ...,
    url(r'^rest-auth/facebook/$', FacebookLogin.as_view(), name='fb_login')
]

rest-auth 도큐먼트의 설명을 보면 해당 url로 요청을 보낼 때 access_token을 보내야
페이스북 로그인 기능을 사용 할 수 있다
액세스 토큰은 페이스북 개발자 페이지에서 제공해준다
실제 서비스를 제공할 때는 api요청을 통해서 액세스 토큰을 전달받지만,
개발단계에서는 제공되는 토큰을 사용한다

postman을 통해서 확인해보면, 액세스 토큰을 해당 url로 전달하면 
jwt를 응답으로 전달 받는 것을 확인 할 수 있다.

댓글