29cm 클론코딩을 진해하면서 팀원들 중 한명이 소셜 로그인을 구현했었다. 그때 미쳐 확실하게 알지 못했던 코드와 진행 과정에대해서 알아보도록하자.
유저가 별도의 회원가입 없이 유저가 이용하고 있는 소셜 웹사이트의 로그인정보를 사용하여 웹사이트를 로그인계정으로 얻게 되어 회원으로 접근할 수 있는 방법
즉, 특별한 회원가입의 절차를 거치지 않고, 기존에 가입된 웹사이트의 아이디와 패스워드로 이용하고 싶은 다른 사이트에 로그인 할 수 있는 기능
- 소셜 로그인 환경을 구축 및 세팅 한 뒤 해당하는 소셜로그인 플랫폼(카카오)에 로그인을 해달라는 요청을 보낸다.
- 로그인에 성공하면 소셜로그인 플랫폼에서 여러가지 요청을 담은 access_token를 보낸다.
- 프론트엔드에서 유저의 소셜로그인에 필요한 토큰을 전달받는다.
- 받은 토근(access_token)을 각각의 소셜 api에 보내서 회원의 정보를 요청
- 소셜 플렛폼에서 받은 자료를 json형식으로 저장
- json 데이터 중 회원의 고유값을 저장하고 있는 키의 값이 DB에 저장되 있는지 비교
get_or_create 활용
4-1. 저장 되있을시 : JsonResponse로 처리완료
4-2. 저장 안되어있을시 : JSON화한 데이터 필요한 자료를 DB에 저장함과 동시에 처리완료
generate_token(user)가 어디서 튀어나온건지 이해가 안된다. 좀 더 살펴보고 블로그 업데이트 할 예정이다. 어느정도 플로우는 이해가 됫고, 다른 소셜로그인도 페이스북을 제외하고는 어느정도 플로우가 비슷한거 같다. 모델 쪽에서 추가해야되는 부분을 전혀 없고, 문자인증을 할때는 모델쪽에서 추가하고 백앤드가 많은 일을 처리하는거 같다.