현재 위코드에서 2차 프로젝트 진행중인데 소셜로그인을 구현하기로 했다.
사실 학부시절 프론트 개발을 배우는 수업에서 facebook 소셜 로그인을 구현한 적이 있어서 백엔드 과정을 진행하고있는 본인 입장에서는 '소셜로그인을 하는데 백엔드가 할게 있나?' 라는 의문이 들었다.
세션을 듣고 난 후에는 그 동안 맞지않던 퍼즐이 맞는듯한 짜릿함을 잠시 느꼇지만...
사실 처음에 든 의문이 70프로 정도는 맞다고 생각이 드는게 백엔드 입장에서는 딱히 설정할 것도 없어서 아주 틀린말은 아닌거 같다.
시작해보자!
주의: 해당 포스트는 '혼자'서 소셜로그인을 구현하는 것이 아닌, 명백하게 프론트엔드와 백엔드의 역할이 나누어 '백엔드입장'에서 처리해야할 내용에 대해 정리한 글입니다.
생각대로 정리해서 다이어그램을 만들어 보긴했는데... 잘 모르겠다면 사과의 말을 남기고 시작하겠다.
현재 진행하고 있는 프로젝트에서는 위에 작성한 flow로 소셜로그인을 구현하긴 했는데, 사실 정답은 없는 것 같다. 맨 처음 말했던 거와 같이 백엔드 입장에서는 별로 할게 없는 것 같기도하고... 위에 flow에서 작성한 백엔드에서 소셜 플랫폼에 보내는 요청또한 프론트에서 보낸 후 받은 사용자 정보를 백에 넘겨주는 방식도 가능할 거 같다는 생각이 든다.
백에서 요청을 보내는 경우에는 서비스에서 이메일이 반드시 필요한경우에 해당 사용자가 플랫폼에 이메일을 등록하지 않은 경우에는 처리하기가 생각보다 복잡하다는 생각이 들기도하고, 차라리 백에서 이와같은 처리를 한 후 이메일이 없으면 이메일을 입력받는 것도 같이 구현한 뒤 좀 더 정리된 정보를 서버로 보내주는것이 백엔드 입장에서도 더 편할 거 같다.
무엇이 더 효율적인지, 혹은 더 합리적인지는 잘 모르겠어서 좀 더 찾아봐야겠다.
현재 구글, 네이버, 카카오 세개 모두 구현한 상태인데 일단 사진에는 구글만 올리겠다.
그 이유는, 사실 요청방식도 똑같고 api주소와 response로 받는 데이터 구조(?) 만 다를 뿐 전체적인 로직은 완전히 똑같기 때문이다.
위와 같은 이유로, 굳이 로그인하는 플랫폼 별로 뷰를 나누어야 할까라는 의문이 생기기도 한다.
여러가지 이유가 있지만 가장 크게 와닿은 것은 OPEN API를 사용하는 경우에는 종종 변화가 생길 수도 있기 때문에 유지보수 측면에서 나누는 것이 유리하다고 한다.
좋은 포스팅 감사합니다!
프론트에서 access_token 만 받아오고 있는데
"password": [
"This field is required."
]
이런 오류가 발생합니다!
models.py를 건드려야하는건가요??