Django/Django study

Django-allauth 소셜로그인

카늬 2022. 11. 15. 12:49

요즘보이는 웬만한 사이트들은 전부 소셜로그인이나 회원가입을 지원하고있다. 이는 매번 새로운 사이트에 들어가서 회원가입을 하게될경우 상당한 귀찮음을 유발하는데 소셜로그인을 지원하는 구글,카카오,네이버 같은 회사들 중 한군데 정도는 아이디가 있으므로 정보를 가져와 간편하고 빠르게 로그인을 할 수 있다. 실제로 나같은 경우에도 새로운 사이트에 회원가입을 할 경우 옛날처럼 처음부터 회원가입을 하는 것이 아닌 소셜로그인을 이용하는 것이 대부분이다.

 

Django에서 소셜로그인을 하기 위한 라이브러리는 가장 간편하다는 allauth를 이용할 것이다.

 

시작하기에 앞서 장고프로젝트가 생성이 되어있다는 것을 전제로 진행 할 것이다.

 

1. 설치

pip install django-allauth

먼저 allauth라이브러리를 설치해준다.

 

2. settings.py

INSTALLED_APPS = [

	...
    
    #allauth
    'django.contrib.sites', #사이트 정보를 설정하기 위해 필요
    'allauth',
    'allauth.account',  #가입한 계정을 관리하기 위해 필요
    'allauth.socialaccount',    #소셜계정 관리를 위해 필요

    #사용할 외부기능
    'allauth.socialaccount.providers.google',#구글
    'allauth.socialaccount.providers.naver',#네이버
]

AUTHENTICATION_BACKENDS=[
    #기존 장고 인증기능
    'django.contrib.auth.backends.ModelBackend',
    #소셜로그인
    'allauth.account.auth_backends.AuthenticationBackend',

]

SITE_ID = 1

#로그인시 이동하는 url
LOGIN_REDIRECT_URL = '/'

settings.py 에 위와 같은 코드를 추가해 준다. 

사용할 외부기능은 'allauth.socialaccount.providers.google' 에서 google부분을 바꾸어 주면 페이스북이나

카카오등으로 사용이 가능하다

 

3. urls.py

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

 

4. DB Migrate

위의 작업이 모두 끝났다면 변경사항을 DB에 적용시켜 주자

python manage.py migrate

5. 관리자페이지

"127.0.0.1:8000/admin" 에 접근하면 다음과 같은 테이블이 생성되어 있을 것이다. 

 사이트들에 접근하면  현제 도메인 이름이 example.com으로 되어있을텐데 127.0.0.1:8000으로 변경 해준다.

 

소셜 어플리케이션에 접근해 소셜 어플리케이션 추가를 해준다.

제공자 : 제공자는 소셜로그인을 서비스를 이용하고 싶은 곳으로 지정해준다.

이름 : 아무렇게나 지어도 문제가 없다.

클라이언트아이디 : 서비스를 제공받는 사이트에서 REST API키를 받아온다.

비밀 키 : 클라이언트아이디를 제공받을때 같이 제공받을 것 이다.

sites : 기존에 왼쪽에 있을 127.0.0.1:8000을 오른쪽으로 넘겨준다. 

 

클라이언트 아이디와 비밀키가 없는경우 받으러 가보자

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

 

6. 템플릿에 추가

<!-- login.html -->

{% load socialaccount %}

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

템플릿에 로그인시키고 싶은 부분에 다음과 같은 코드를 넣어준다.

 

서버를 실행하여 태그를 클릭하면 정상적으로 작동하는 것을 알 수 있다.