본문 바로가기

Web Programming/Django

소셜로그인 API 활용하기

소셜로그인 

구글 및 네이버 등 다양한 소셜 로그인을 Django에서 활용할 수 있다.


## 기능 구현을 위해 사용할 패키지 allauth


1
$ pip install django-allauth
cs


## settings.py


1
2
3
4
5
6
7
8
9
10
11
12
13
INSTALLED_APPS = [
    ...
    'django.contrib.sites',
    ...
    # allauth
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
 
    # provider
    'allauth.socialaccount.providers.google'
    # 원하는 사이트 마지막에 google 대신 추가
]
cs

1
2
3
4
5
6
AUTHENTICATION_BACKENDS=(
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
)
SITE_ID=1
LOGIN_REDIRECT_URL = '/'
cs





## url 처리


1
2
3
4
5
# project/project/urls.py
urlpatterns=[
...
path('accounts/',include('allauth.urls')),
]
cs


## migrate 해주기


1
$ python manage.py migrate
cs


## admin 설정 수정하기



1) Home>Sites>Sites>example.com 에서 

127.0.0.1:8000 로 수정



2) Home>Social Accounts> Social Applications>add...

provider - google 추가하기

(1) 이름 아무거나 써주고 

(2) client id, secret key 알아오기(console.developers.google.com)

(3) new project 만들고 credentials 에서 인증정보 만들기_Oauth Client ID 클릭_web 클릭



(4) javascript, redirect 주소 정보에 http://127.0.0.1:8000 입력

(5) admin 페이지 돌아와서 발급받은 정보 입력

(6) admin 페이지 돌아와서 site에 주소 입력해두기


## template 처리


1
2
3
4
# project/accouts/templates/login.html
{% load socialaccount %}
{% providers_media_js %}
<a href="{% provider_login_url 'google' %}"> 구글 로그인 </a>
cs


## 400 에러 뜨면 redirect에 해당 url 추가하기!!



## 완성