본문 바로가기

78 Django 소셜로그인 - NAVER LOGIN

78.1 소셜로그인 장고 설정 - allauth

소셜로그인을 쉽게 할수 있는 라이브러리 몇개 있지만
꾸준히 관리되고 업데이트 되는 allauth 라이브러리를 이용하겠습니다.
좋은 라이브러리들은 쉽게 사용할 수 있기도 하지만
특징은 가이드 문서가 길다는 단점이 있습니다.

파이썬블로그(pythonblog.co.kr)는 일반 로그인은 하지 않고 소셜로그인(네이버,카카오,구글 등) 만 적용할 생각입니다.

이번글은 우선 간단하게 로그인 구현만 먼저하고
다음글에 로그인 된 정보를 이용하여 댓글 기능을 만들도록 하겠습니다.

76 Django CBV 댓글 기능 - Ajax 등록
77 Django CBV 댓글기능-Ajax 수정/삭제
78 Django 소셜로그인 - NAVER LOGIN
79 Django 소셜로그인 인증활용하여 댓글기능 만들기

78.2 allauth 셋팅하기 - base.py

base.py에 allauth 사용하기 위해 설정정보를 입력합니다.

allauth 공식문서를 통해 자세한 내용을 확인 할 수 있습니다.
allauth 설치가이드: https://django-allauth.readthedocs.io/en/latest/installation.html

pip install django-allauth
  • 현재 설치되는 allauth 버전은 0.51.0 입니다.
#sttings.py
SITE_ID = 1 

DJANGO_BASE_APP = [
        ...
        ...
        ...

    'allauth',
    'allauth.account',
    'allauth.socialaccount',

     'allauth.socialaccount.providers.naver',  
]

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',    
    'allauth.account.auth_backends.AuthenticationBackend',
]
SOCIALACCOUNT_PROVIDERS = {
    'naver': {'APP': {
                        'client_id': 'xxxxxxxxxxxxxxxxxxxxxxxxx',
                        'secret': 'xxxxxxxxxxx',
                        'key': ''
                }},
}

LOGIN_REDIRECT_URL = '/'   # social login redirect
ACCOUNT_LOGOUT_REDIRECT_URL = '/'  # logout redirect
     ...
     ...
  • allauth.socialaccount.providers.naver : 네이버 사용
    1)사용가능 소셜로그인 리스트
  • AUTHENTICATION_BACKENDS : 백앤드에서 인증처리 관련
  • SOCIALACCOUNT_PROVIDERS
    1) 소셜 로그인에 필요한 client_id와 secret 를 입력합니다.
    2) 네이버로그인 client_id와 secret는 네이버개발자센터에서 신청해야 합니다.
    3) 네이버 개발자센터 가입후 네이버로그인 API를 신청시 콜백url을 입력해야 합니다.
    4) 네이버 로그인 Callbak URL: http://localhost:8000/accounts/naver/login/callback/
    5) 등록이 완료되면 Client ID, Client Secret을 확인할 수 있습니다.

  • LOGIN_REDIRECT_URL : 소셜로그인 인증이 완료된 이름 돌아갈 페이지

  • ACCOUNT_LOGOUT_REDIRECT_URL : 로그아웃 이후 돌아갈 페이지

78.3 accounts 경로 설정 - urls.py

urls.py url패턴을 입력합니다.

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

78.4 allauth 테이블 생성- migrate

migrate 명령어로 allauth 관련 모델을 생성합니다.

python manage.py migrate
  • migrate가 완료되었으면 이제 server를 실행합니다.
python manage.py runserver

78.5 소셜로그인 버튼 만들기

소셜로그인이 성공하면 메인(LOGIN_REDIRECT_URL)으로 오도록 설정하였으니
로그인 테스트하기위해 메인화면에 로그인 및 로그아웃 버튼을 추가합니다.

index.html

       ...
      ...
{% comment %} start social {% endcomment %}
{% load socialaccount %}
<div>
    {% if user.is_authenticated %}
        <a href="/accounts/logout" type="button" class="h1">Logout</a>   
    {% else %}                
        <a href="{% provider_login_url 'naver'%}"> NAVER Social Login</a>        
    {% endif %}
</div>
{% comment %} end social {% endcomment %}

       ...
      ...
  • user.is_authenticated : 로그인 성공여부
  • provider_login_url : provider_login_url 에 naver를 바인딩 합니다.

78.6 네이버 소셜로그인 하기

NAVER Social Login을 클릭하면 위 스샷과 같이
로그인 진행 페이지로 이동됩니다.

Naver을 통한 로그인
서드파티 Naver의 계정을 사용해 로그인을 진행하려 합니다.

계속 버튼을 클릭하면
네이버로그인 및 제공항목 동의 페이지로 이동됩니다.
네이버로그인 및 제공항목 동의페이지 네이버 소셜로그인성공

네이버 로그인을 성공하여 Logout이 표시되었습니다.

78.7 로그인 데이터 확인

socialaccount_socialaccount 테이블에 로그인정보가 들어있음을 확인할 수 있습니다.

로그인 성공할때 view.py request 에서 유저정보가 없네요..
어디서 받아야 할지 allauth 문서를 찾아봐야겠습니다.

현재글 : 78 Django 소셜로그인 - NAVER LOGIN
Comments
Login:

a**sk3939@naver.com naver
a**sk3939@naver.com 2023.11.16 16:59:20

잘 보고 갑니다. ^^

Copyright © PythonBlog 2021 - 2022 All rights reserved
Mail : PYTHONBLOG