54.Django(장고) - ecommerce 프로젝트 - 소셜 로그인

JungSik Heo·2024년 12월 14일

1.pip install django-allauth

2. config\urls.py 파일에 allauth 경로를 추가

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

3. config\settings.py 파일에 allauth 경로를 추가

INSTALLED_APPS = [

    'payment',#dev_41 앱추가
     #dev_46 소셜로그인 추가
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    
    #provider 추가 (추가로 다른 사이트도 하고 싶을 경우 뒤에 이름만 변경하면 됨)
    #'allauth.socialaccount.providers.google', #구글로그인 구현시 추가
    'allauth.socialaccount.providers.kakao', # 카카오로그인 구현시 추가
    #'allauth.socialaccount.providers.naver', # 네이버 로그인 구현시 추가
]

AUTH_USER_MODEL = 'user.User' #추가!! 없으면 오류 발생 "앱이름.모델명" user모델생성 후 allauth말고 내가 생성한 모델을 우선으로 적용

SITE_ID = 1 #추가

MIDDLEWARE = [
   
    'allauth.account.middleware.AccountMiddleware', # 추가
]

AUTHENTICATION_BACKENDS = [
    #추가 장고에서 사용자의 이름을 기준으로 로그인하도록 설정
    'django.contrib.auth.backends.ModelBackend',
    # 추가 'allauth'의 인증방식 추가
    'allauth.account.auth_backends.AuthenticationBackend',
]

SOCIALACCOUNT_LOGIN_ON_GET = True
#LOGIN_REDIRECT_URL = 'main'
ACCOUNT_LOGOUT_REDIRECT_URL = 'index'
ACCOUNT_LOGOUT_ON_GET = True

#dev_46 소셜로그인 설정
SOCIALACCOUNT_PROVIDERS ={
#추가 카카오 설정
"kakao": {
"APP": {
"client_id": "본인의 클라이언트 아이디",
"secret": "본인의 시크릿키",
"key": ""
},
# scope의 경우 내가 어떤 데이터를 가져올건지를 선택하는 것인데 사이트마다
# 제공하는 값이 다르기 때문에 가져올 데이터를 설정한 이후 추가/삭제 해보면 됩니다.
# SCOPE값에 제공하지 않는 값을 넣거나 하는 이유로 오류가 나올 수 있음
"SCOPE": [

],
#추가
"AUTH_PARAMS": {
"access_type": "online", #추가
'prompt': 'select_account', #추가 간편로그인을 지원해줌
}}}

아래의 모듈이 없다고 하면 아래의 명령어를 실행

pip install requests

python manage.py makemigrations
python manage.py migrate

3. templates\layout\navbar.html

        </li>
        {% comment %} dev_46 추가 {% endcomment %}
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="{% url 'accounts:kakao_login' %}">소셜로그인</a>
        </li>
      </ul>

아래와 같이 카카오로그인이 되는지 확인

profile
쿵스보이(얼짱뮤지션)

0개의 댓글