Django Facebook 로그인하는 방법

Posted by Hide­
2018. 5. 7. 18:42 개발

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에 토큰이 발급된다.

이제 이 액세스 토큰을 사용하여 로그인을 진행하면 된다.