바뀜
둘러보기로 가기
검색하러 가기
2번째 줄:
2번째 줄:
+
− 문서에선 allauth를 이용하여 sns로그인을 구현한다.
+
29번째 줄:
30번째 줄:
+
41번째 줄:
43번째 줄:
− +
+
+
+
+
− +
+
56번째 줄:
63번째 줄:
− +
− +
72번째 줄:
79번째 줄:
− +
+
+
+
127번째 줄:
137번째 줄:
− +
+
+
+
+
+
+
136번째 줄:
152번째 줄:
+
+
+
편집 요약 없음
==개요==
==개요==
유명하지 않은 사이트의 계정을 다 기억하는 건 참 어려운 일. 이럴 땐 공신력을 갖춘 외부 서비스의 인증기능에 위임하여 사용하면 편하다.
유명하지 않은 사이트의 계정을 다 기억하는 건 참 어려운 일. 이럴 땐 공신력을 갖춘 외부 서비스의 인증기능에 위임하여 사용하면 편하다.
<br />
==사전작업==
==사전작업==
pip install django-allauth
pip install django-allauth
===settings.py 설정===
===settings.py 설정===
<code>INSTALLED_APPS = [</code>하위에 다음과 같은 내용들을 추가해 넣어준다.<syntaxhighlight lang="python">
<code>INSTALLED_APPS = [</code>하위에 다음과 같은 내용들을 추가해 넣어준다.<syntaxhighlight lang="python">
'django.template.context_processors.request',
'django.template.context_processors.request',
</syntaxhighlight>
</syntaxhighlight>
===urls.py 설정===
===urls.py 설정===
다음과 같이 url을 추가해준다.<syntaxhighlight lang="python">
다음과 같이 url을 추가해준다.<syntaxhighlight lang="python">
django.contrib.sites.models.Site.DoesNotExist: Site matching query does not exist.
django.contrib.sites.models.Site.DoesNotExist: Site matching query does not exist.
앱에 'django.contrib.sites'가 추가되었기 때문에 발생하는 에러인데, settings.py 아무데나 SITE_ID = 1을 지정해주면 된다. SITE_ID=1 # 무슨의미일까?
앱에 'django.contrib.sites'가 추가되었기 때문에 발생하는 에러인데, settings.py 아무데나 SITE_ID = 1을 지정해주면 된다. SITE_ID=1 # 무슨의미일까?
<br />
===site 설정===
===site 설정===
admin 페이지에서 본인의 도메인을 사이트에 등록한다.
admin 페이지에서 본인의 도메인을 사이트에 등록한다.
===각 서비스 API 받기===
===각 서비스 API 받기===
*각 서비스에서 받은 API는 관리자페이지에서 <code>소셜계정>소셜어플리케이션 추가</code>에서 등록한다.
*각 서비스에서 받은 API는 관리자페이지에서 <code>소셜계정>소셜어플리케이션 추가</code>에서 등록한다.
*서비스 url은 로컬환경에서 개발중이라면 [http://localhost:%ED%8F%AC%ED%8A%B8%EB%B2%88%ED%98%B8/ http://localhost:포트번호] 형식으로 등록한다.
*서비스 url은 로컬환경에서 개발중이라면 http://localhost:포트번호 형식으로 등록한다.
*callback URL은 [https://django-allauth.readthedocs.io/en/latest/providers.html#naver allauth 문서]에서 참고하면 된다.
*callback URL은 [https://django-allauth.readthedocs.io/en/latest/providers.html#naver allauth 문서]에서 참고하면 된다.
{| class="wikitable"
{| class="wikitable"
|+
|+
|
|
*[https://developers.naver.com/products/login/api/ 네이버아이디로 로그인] 서비스에서 오픈 API를 신청한다.
*[https://developers.naver.com/products/login/api/ 네이버아이디로 로그인] 서비스에서 오픈 API를 신청한다.
*callback url : [http://http//127.0.0.1:8000/accounts/naver/login/callback/ http://http://127.0.0.1:8000/accounts/naver/login/callback/] 형태.
*callback url : http://http://127.0.0.1:8000/accounts/naver/login/callback/ 형태.
*소셜어플리케이션에서 얻은 클라이언트 아이디와 비밀키를 입력한다.
*소셜어플리케이션에서 얻은 클라이언트 아이디와 비밀키를 입력한다.
*등록할 때 이용가능한 사이트를 모두 선택해준다.(안해주면 어떻게 될까?)
*등록할 때 이용가능한 사이트를 모두 선택해준다.(example.com 이라도 안해주면 에러가 난다.)
*로그인 버튼은 다음 [https://developers.naver.com/docs/login/bi/ 링크]에서 제공받을 수 있다.
*로그인 버튼은 다음 [https://developers.naver.com/docs/login/bi/ 링크]에서 제공받을 수 있다.
|-
|-
|
|
|
|
|}다른 곳에선... 사이트들에 서비스하는 사이트(http://127.0.0.1:8000/<nowiki/>)를 등록하는데... 일단 안하고 진행해볼까?
|}
다른 곳에선... 사이트들에 서비스하는 사이트(http://127.0.0.1:8000/<nowiki/>)를 등록하는데... 일단 안하고 진행해볼까?
<br />
==탬플릿 만들기==
==탬플릿 만들기==
</syntaxhighlight>for에 따라 이미지가 바뀌게 넣는 법을 모르겠다.; 아시는 분이 수정 부탁드립니다.
</syntaxhighlight><br />
== 확인 ==
만들어진 탬플릿에서 네이버나 구글 따위의 제공자 버튼을 클릭하면 회원가입과 로그인이 이루어진다. 이 확인은 관리자 페이지에서 확인 가능하다.
관리자페이지의 소셜계정 앱 안의 소셜계정 모델이 추가되는 것과 동시에 기본 인증앱의 Users 모델에 새로운 모델이 추가되어 있다.
==기존 회원관리 뷰 수정==
==기존 회원관리 뷰 수정==
회원관리 뷰에서 회원가입 후에 자동으로 login을 시키는 경우, 기존 뷰를 수정해주어야 한다. 이번에 백엔드를 2개 사용하게 되었기 때문에 백엔드 옵션값을 주어야 한다.
회원관리 뷰에서 회원가입 후에 자동으로 login을 시키는 경우, 기존 뷰를 수정해주어야 한다. 이번에 백엔드를 2개 사용하게 되었기 때문에 백엔드 옵션값을 주어야 한다.
login(request, user, backend='django.contrib.auth.backends.ModelBackend')
login(request, user, backend='django.contrib.auth.backends.ModelBackend')
<br />
<references />