Django - 소셜 로그인 추가하기(allauth, naver)
Web/Django

Django - 소셜 로그인 추가하기(allauth, naver)

뉴비뉴 2019. 8. 17.

1. 설치하기

* pip install django-allauth

 

2. settings.py

INSTALLED_APPS = [
    'django.contrib.sites',
    'allauth',
    'allauth.account', # 가입한 계정 관리
    'allauth.socialaccount', # 소셜 계정으로 가입한 계정 관리
    'allauth.socialaccount.providers.naver', # 어떤 소셜 서비스를 사용하는지 추가
]


AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
)
SITE_ID = 1
LOGIN_REDIRECT_URL = '/'

3. urls.py

config/urls.py

path('accounts/', include('allauth.urls')),

4. python manage.py migrate

5. 로그인, 로그아웃 기능을 구현하고 싶은 템플릿에서 작성

<li class="nav-item">
       {% if user.is_authenticated %} {# 유저가 로그인 중이면 #}
       <a href="{% url 'account_logout' %}" class="nav-link">Logout</a>
       {% else %}
       <a href="{% url 'account_login' %}" class="nav-link">Login</a>
       {% endif %}
</li>

account_login, account_logout 은 urls.py에서 지정해준 적이 없지만 allauth 앱에서 설정해둔 이름이다.

정리해보자면 3. urls.py 에서 생성한 account에 allauth 가 login과 logout을 지원한다고 생각하면 된다.

Login
Signup

나는 구현해준 적이 없는 내용과 form 태그가 보인다. 이것은 allauth에서 자동으로 생성해준 것이다.

* Naver 링크는 아직 기능을 구현해주지 않았기 때문에 작동하지 않는다.

해당 form 들은 보안 보안정책도 적용이 되어있다. 아래 사진을 참고해서 보자

6. API

네이버 같은 소셜 로그인 기능을 사용하려면 해당 소셜 사이트에서 API 키를 발급 받아야 한다.

네이버 개발자 사이트에 접속해 발급 받아보자.

https://developers.naver.com/products/login/api 

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음성인식, 음성합성 등이 있습니다.

developers.naver.com

Callback url은 각 서비스마다 다르니 allauth 문서를 참조하면 된다.

등록버튼을 누르면 아래와 같은 정보가 나온다. 이 정보를 Django 관리자 페이지에서 등록하면 절차가 끝난다.

 

Available sites에 있던 example.com을 Chosen sites로 옮기고 SAVE를 누른다.

 

가입 정보는 관리자페이지에서 확인할 수 있다.

 

2019/09/06 추가내용

Login인 기능은 myaccount에 구현되어있고, 구글로그인과 같은 소셜로그인이 따로 필요한 경우가 있다.

그럴 땐 아래와 같은 코드를 작성해주면 간편하게 가져올 수 있다.

{% load socialaccount %}
 <a href=" {% provider_login_url 'google' %}">구글 로그인</a>

댓글

💲 추천 글