장고 - django allauth 사용(facebook 연동)

  • facebook은 https에 한해서 연동되므로, 앞서 포스팅했던 openssl로 인증서 생성 및 해당 프로젝트로 파일 이동시킨 후, 아래와 같은 절차를 따른다.

1. django-allauth 설치

pip install django-allauth

2. settings.py의 INSTALLED_APPS 추가

INSTALLED_APPS = [
    ...
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
]

3. settings.py에 AUTHENTICATION_BACKENDS 추가

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
]

4. 사용하고자 하는 프로바이더 추가

INSTALLED_APPS = [
    ...
    'allauth.socialaccount.providers.facebook',
]

5. settings.py에 SITE_ID 값 추가

SITE_ID = 1

6. urls.py에 allauth 관련 라우팅 추가

urlpattterns = [
    ...
    path('accounts/', include('allauth.urls')),
]

7. migrate 명령 실행

$ python manage.py migrate

8. 페이스북 개발자 사이트로 이동하여 앱 등록

9. 앱 이름과 이메일 입력 후, [앱 ID 만들기] 버튼 클릭

10. 앱 기능 중, Facebook 로그인 통합에 체크 및 [확인] 버튼 클릭

11. 화면 하단 ‘내 제품’ 목록에서 Facebook 로그인의 [설정] 버튼 클릭

12. 유효한 Oauth 리디렉션 URI에 서버 주소 입력 및 [변경 내용 저장] 버튼 클릭

13. 앱 기본 설정 페이지로 이동하여 앱 ID와 시크릿 코드 확인

14. 관리자 페이지 Social application에 새로운 설정 추가

  • Provider : Facebook
  • 이름 입력
  • Client Id, Secret Key : 페이스북 앱 화면에서 복사 붙여넣기
  • sites : ‘Available sites’의 example.com을 우측 ‘Chosen sites’로 이동

15. 로그인 페이지에 접속해 Facebook 버튼 클릭

  • …/accounts/login 페이지 이동하여 Facebook 로그인
    • …/accounts/profile 페이지로 이동한다면, settings.py에 아래 코드 추가
    • `LOGIN_REDIRECT_URL = ‘/‘