Django Kakao SNS Login

JIYEONG YUN·2021년 9월 13일
1

kakaoapi 라는 앱 생성

$ python manage.py startapp kakaoapi

allauth 설치

$ pip install django-allauth

settings.py 설정

INSTALLED_APPS = [
    'kakaoapi',
    ...
    # allauth
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    
    # provider
    'allauth.socialaccount.providers.kakao',
    ...
]

...

# 파일 제일 밑에 아래 코드 추가하기

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

SITE_ID = 1
LOGIN_REDIRECT_URL = '/'		# 로그인 후 리디렉션할 페이지
ACCOUNT_LOGOUT_REDIRECT_URL ='/'	# 로그아웃 후 리디렉션 할 페이지
ACCOUNT_LOGOUT_ON_GET = True		# 로그아웃 버튼 클릭 시 자동 로그아웃

home.html 생성

{% load socialaccount %} {% providers_media_js %}

<h1>Hello World</h1>

<a href="/accounts/signup">회원가입</a>
<br />

{% if user.is_authenticated %}
<a href="/accounts/logout">로그아웃</a>
<br />

{{user.username}}님이 로그인 중 {% else %}
<a href="{% provider_login_url 'kakao' %}">카카오 로그인</a>
로그인하세요.
{% endif %}

views.py 설정

from django.shortcuts import render

def home(request):
    return render(request, 'home.html')

urls.py 설정

from django.contrib import admin
from django.urls import path, include
import kakaoapi.views

...
urlpatterns = [
    ...
    path('accounts/', include('allauth.urls')),
    path('', kakaoapi.views.home, name='home'),
    ...
]

superuser 생성

  • 원하는대로 Username, Email, Password를 설정하면 된다.
  • 임의로 admin이라 넣음

python manage.py createsuperuser

Username (leave blank to use 'pinco'): admin
Email address: admin@naver.com
Password: admin
Password (again): admin
Superuser created successfully.

장고 마이그레이션 실행

$ python manage.py migrate


kakao developers

1. 아래 링크로 들어가 애플리케이션을 생성한다.

내 애플리케이션 > 애플리케이션 추가하기 > 정보 입력 > 저장

https://developers.kakao.com

2. REST API키를 잘 기록해두기!

3. 사이트 도메인 설정

앱 설정 > 플랫폼 메뉴 > Web > Web 플랫폼 설정

4. Redirect URI 등록

3번에서 '등록하러 가기' 버튼을 눌러도 되고, 아래 경로로 들어가도 무방하다.

제품설정 > 카카오 로그인

  • 아래 url 2개 추가하기
	http://localhost:8000/
	http://localhost:8000/accounts/kakao/login/callback/
  • 활성화 설정 상태 ON

5. 동의항목 설정

  • 필요한 항목들 설정

6. Client Secret 발급받기


서버 실행시키기

$ python manage.py runserver

1. admin 페이지 접속하기

http://127.0.0.1:8000/admin/

2. 위에서 만든 superuser 계정으로 로그인

3. sites 설정

  • sites > Change 클릭
  • example.com으로 되어있는 도메인을 아래와 같이 변경

4. social applications 설정

  • SOCIAL ACCOUNTS > ADD SOCIAL APPLICATION
  • Provider: Kakao
  • Name: 앱 이름
  • Client id: 위에서 발급받은 REST API 키
  • Secret key: 위에서 발급받은 client secret 키

5. 메인페이지 실행

http://localhost:8000/


🔗 참고문헌

카카오 문제해결 문서

https://developers.kakao.com/docs/latest/ko/kakaologin/trouble-shooting

카카오 어플리케이션 등록 문서

https://docs.kakaoi.ai/kakao_i_agent/instance/application/

Django allauth

https://django-allauth.readthedocs.io/en/latest/installation.html

profile
나의 '개발'자국 🐾 | [이전 블로그] https://blog.naver.com/yoonjy1106

0개의 댓글