-
[DJANGO] 카카오 소셜로그인 구현코딩/🟢 DJANGO 2021. 10. 3. 18:34
여태까지 배웠던 로그인과 회원가입 기능은 자신의 서버에 직접 회원정보와 암호화된 비밀번호를 로컬 데이터 베이스에 저장하는 거였다면,
소셜 로그인은 어떤 방식으로 회원가입이 이뤄지고 로그인이 이뤄지는 것일까?
수많은 소셜 로그인 중 3700만 회원을 가진 카카오 소셜 로그인에 대해서 알아보도록 하자.
1. 공식문서 읽어보기
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
공식문서를 천천히 살펴보면 OAuth2.0 개념이 나온다.
OAuth 2.0 이 무엇일까? 공식문서를 확인해보자 OAuth 2.0
정리하면, 공개 API(Open API)로 제공되는 표준 인증 방법이라고 한다.
3단계로 이어지는 이러한 표준 인증 방법은 [인증코드 - 토큰 - 토큰으로 API를 호출] 흐름을 가지는 표준 인증방법이라고 생각하면 된다.
2. 전체적인 로직 흐름 파악하기
우선 카카오 서버를 카카오 인증서버와 카카오 자원서버 2가지로 생각하자.
인증서버에선 인증된 회원인지 아닌지를 판별하고
자원서버에선 인증된 회원에게 회원정보를 건네주는 서버라고 생각하자.
1. 인가코드를 카카오인증서버에서 받아오기
2. 받아온 인가코드를 이용해 카카오인증서버에서 Access Token 과 Refresh Token 받아오기
3. Access Token 과 Refresh Token으로 카카오 자원서버에 회원정보 요청 후 받아오기🚨이때, 인가코드와 Access token를 받아오는 부분은 프론트와 상의해야한다.
인가코드를 백엔드에서 처음부터 가져오거나, 프론트에서 인가코드를 받아오는 것을 정해야하는데
이번 프로젝트는 프론트에서 인가코드와 Access token을 받아오는 것으로 결정했다.
3. 카카오 자원서버로 형식을 갖춰서 요청 보내기
이제 프론트엔드에서 받아온 Access token을 가지고 카카오 자원서버에 요청해보자. 어떻게 카카오 자원서버에 요청해야하는 것일까?
우선, 카카오 자원서버에 요청을 보낼때, 일정한 형식을 갖춰서 보내야한다.
그렇다면 일정한 형식이란 카카오 공식문서에는 어떻게 설명하고 있을까?
✅ Request 형식 파악하기
GET/POST /v2/user/me HTTP/1.1 - 카카오 자원서버에 요청시 이쪽 주소로 보내줄 것.
HOST - 카카오 자원서버는 kapi.kakao.com 이쪽으로 요청할 것
Authorization - 인증된 토큰은 Bearer type 이며 {Access_Token} 을 담아서 요청할것
✅ Sample 테스트 결과와 json 정보구조 파악하기
사용자의 정보를 갖고 싶다면 ,
GET 메소드를 HOST (카카오 자원서버) 에 보낼때 헤더에 Authorization : Bearer {ACCESS_TOKEN} 형식으로 보내면 된다고 한다.
만약 이러한 형식이 올바르고 토큰 또한 인증된 토큰이라면, json형태로 정보를 가져오게 된다.
🚀. REST API 테스트 도구 사용하기
프론트와 통신하기전에 내 로직이 맞는지 정확한 정보를 가져와 회원가입을 수행하는지 알고싶다면
카카오 REST API 테스트 도구를 사용하자.
인가코드를 가져오는 번거로운 과정없이 토큰을 직접 발행해주기 때문에 테스트하기 수월하다는 장점이 있다.
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
1. 사용자 정보를 가져오는 것 클릭
2. 인증앱엔 자신이 만든 앱으로 전환할 것
3. 토큰 발급
4. 전송을 하게 되면 테스트 데이터 정보가 json 형태로 반환되어 출력된다.
'코딩 > 🟢 DJANGO' 카테고리의 다른 글
[Django REST framework] 튜토리얼 1 : Serializer (0) 2022.02.25 [DJANGO] ORM : Aggregation, Annotate (0) 2021.11.10 [DJANGO] 인증과 인가(4) : Login decorator (0) 2021.09.25 [LAFESTA] 수정사항들 (0) 2021.09.13 [REST API] Path Prameter & Query Prameter (0) 2021.09.13