Oxygen Cherry - Pencil
본문 바로가기

PM 부트캠프(22.12.12~23.03.15)/과제

오픈 API 탐색 - 카카오 로그인 API (W7D3)

728x90

과제 ) 오픈 API를 탐색하고, 제공하는 기능과 구조 살펴보기

더보기
  • 공개되어 있는 오픈 API를 탐색해 봅니다.
  • 탐색해 본 오픈 API 중 하나(이상) 를(을) 선정해서 제공하는 기능과 구조를 살펴보고, 간단하게 요약해 정리해 봅니다.
  • (선택) 기능 하나를 선정해 API의 역할, 입출력 구조를 정리해 봅니다. 

 

정상적으로 서비스하는 오픈 API 서비스를 선정하였는가?
오픈 API의 전체 구조를 분석해 정리하였는가?
오픈 API가 제공하는 기능의 종류와 역할에 대해 분석해 정리하였는가?
해당 오픈 API를 실제 제품 개발에 활용하기 위한 방안에 대해 고민하였는가?
API의 기능을 분석하는 과정에서 RESTful 동작을 정확하게 이해하고 적절하게 분석하였는가?
제공하는 기능 중 하나 이상을 선정해 해당 API의 상세 구조와 기능을 분석해 정리하였는가?
오픈 API가 제공하는 서비스의 범위와 한계에 대해 분석해 정리하였는가?

 

 

⊙ 과제의 핵심 용어(또는 이론)

내 이해가 맞다면? API 관련 개념들 
오픈 API: 파견 직원  
API: 창구 직원
CRUD: 직원 업무 지침 
프레임워크: 문화권 
라이브러리: 세부적 문화

 

 

api를 실제로 들여다보는 게 오늘 과제의 핵심이다. 

 


 

오늘 다룰 Product

카카오톡 로그인 API 

카카오톡의 하위 사이트 kakao developers에서 배포하는 API 

이 사이트에서는 톡캘린더, 카카오 지도, 푸시 알림 등 다양한 직원을 제공한다. 

 

카카오톡 로그인 api 링크

 

 

⊙ 선정 사유 

옛날에 들어가봤다가 뭔 소린지 못 알아먹고 후퇴한 경험이 있다. 다른 부분은 못알아먹고, 개인정보 중 어느 항목이 필수 제공이고 어떤 항목이 선택사항인지, 어떤 정보를 제공받으려면 어떻게 해야하는지 정도만 살펴보았다. 그때 만든 카카오톡 개발자 아이디도 있다. 일부분만 봤었고 나머지를 미스테리한 마법서로 치부하고 넘어갔으니 이번 기회에 다시 봐야겠다는 생각을 했다. 

사이드 프로젝트 깔짝대보면서 api에 대해 들은 적이 있다. 그때 내가 서비스에 담고 싶은 기능이 기상청 날씨 api와 캘린더 api를 활용하면 된다는 사실을 알게 되었다. 이 두 개를 찾아봐도 좋았겠지만, 어쩌면 더 배울 게 많을 수도 있겠지만(전자는 규모가 크고 복잡해서, 후자는 필요한 api를 찾는 행동에 익숙해지므로) 오늘 컨디션이 좋지 않아 간단한 소셜 로그인을 선택했다. 

처음 살펴볼 땐 간단하고 익숙한 걸로 시작해야 전체적인 문서 구조에 익숙해질테고 많은 사람이 쓰는 api니까 깔끔하고 상세하게 설명되어있지 않을까 싶었다. 잘 모르는 분야에 발을 들일 때는 easy 모드를 선택하는 게 나한테는 낫다. 나는 겁을 안먹어야 편하게 배우는 놈인 거 같다.

게다가 카카오톡 로그인 api는 어떤 서비스든 쓰이기 때문에, 사이드 프로젝트를 한다고 쳐도 쓸 확률이 높으니 알아두면 손해는 없다고 생각했다. 어떤 말을 적어야 소셜 로그인이 필수적으로 들어갈 기능이라는 문장에 설득력있는 근거를 제시할 수 있지? 토이 프로젝트나 작은 서비스라면 더더욱 소셜 로그인을 활용한다. 왜냐면 자체 회원약관과 개인정보 처리방침, 관리 규칙, 데이터베이스를 구축하는 건 노력이 들기 때문이다. 사용자 입장에서도 소셜 로그인이 관리, 편의성, 신뢰성 측면에서 심리적 장벽이 낮다. (자체 회원약관과 개인정보 처리방침 제작이 소셜 로그인만 하면 필수 제작이 아닌 것인지 토이 프로젝트에서 일일이 만들진 않을 거 같은데 그럼 법인한테만 필수인지 어떤지 사실확인 필요) 

 

 

 

선정 사유를 정리하자면, 

  • 한국어인데도 못알아먹었던 예전 경험을 만회하고 싶음 
  • 컨디션이 별로다 → 길고 깊게 붙잡고 있을 수 없다 →  간단하고 익숙한 것
  • 소셜 로그인 api는 매우 자주 쓰이므로 반드시 알아야 함 

 

 


| 카톡 로그인 API는 어떻게 이루어져 있는가? 

 

제공하는 기능과 구조

 

<기능>

  • 사용자가 카카오계정으로 로그인할 수 있는 기능: 고유한 회원번호 제공
  • 간편한 로그인 
    • 카카오싱크 간편가입
    • 카카오톡에서 자동 로그인
  • 회원 정보 
    • 동의를 바탕으로 사용자 개인정보와 같은 자원(Resource)에 대한 접근 권한 부여
    • 카카오 계정 회원정보 받기 
      • 필수, 선택 동의
      • 추가 동의 받기 
  • 카카오 로그인 버튼 리소스 

 

 

 

<구조>

여기에서 가져온 이미지를 살펴보면, GET과 POST 두 가지 메소드만 사용된다. GET 메소드가 데이터 조회고 POST가 생성이다. 

 

구조를 줄글로 나열해보겠다. 

1번 단계에서 사용자가 '카카오톡으로 로그인' 버튼을 누르면 클라이언트를 통해 로그인 화면을 요청하는 내용이 서버로 전달된다. 서버는 {클라이언트로 받은 아이디, 비밀번호 입력 데이터 또는 기기에 자동으로 로그인 되어있는 다른 서비스 기록이나 브라우저에 저장된 암호 등의} 데이터를 통해 카카오톡 서버(DB와는 간접적으로 소통하겠지 아무래도?)에 회원정보를 조회하기를 요구한다. 여기가 바로 오픈 API가 GET 메소드를 사용하는 부분이다. 로그인 정보가 불일치한다면(아이디가 없거나 오타를 내었다면) 로그인 실패한 경우가 다 그렇듯 경고 메세지를 띄운다. 이미 카카오톡을 통해 로그인한 적이 있다면 기본 24시간, [로그인 상태 유지]를 선택한 경우에는 1달까지는 계정 로그인 세션 인증을 하지 않을 수 있다. 

로그인 정보가 일치하면 다음 단계로 넘어가서, "카카오가 여기 서비스에 당신의 정보를 드려도 됩니까"라고 묻는 동의 화면을 띄운다. 이 과정을 인가라고 하는데 사용자가 동의 버튼을 클릭하고 계속 진행하길 선택한다면, 오픈API가 인가 코드(어떤 회원이 어디로 서비스를 전달하겠다는 청구서 같은 것)를 들고 카카오톡 측으로 이동한다. 다만 이 정보 제공 동의는 최초 가입 시에만 등장한다. 

요청을 받은 카카오 인증 서버는 회원정보에 접근해도 된다는 허가서 같은 개념인 토큰(정확히는 로그인 인증인가 정보를 담은 권한 증명)을 생성한다. 이건 POST 메소드를 사용하는 부분이다. 생성된 토큰을 가지고 서비스 서버에 전달하면, 서비스는 이걸 이용해서 사용자 정보를 확인하고 로그인 또는 가입 처리한다. 

 

 

 

 요약해 정리

 

정리하자면 

  • 로그인 버튼 클릭 (사용자) 
  • 카카오 인증 서버가 계정 데이터를 통해 판별한 고유 회원에게 정보 제공 동의를 요청 
  • 이런저런 정보를 제공하기로 동의했다는 정보(인가코드)를 가지고 토큰(허가증) 생성 
  • 토큰을 받은 서비스 서버가 로그인 시키거나 가입 시킴 
  • 24시간 (로그인 상태 유지를 선택했으면 1달 후) 과정 반복 

 

 

성의가 없는 게 아니라 머리가 아파서 과제를 이만 끝마치겠다. 

두통이 있는 원인을 나조차 모르겠다. 


여담

과제에서 요구하는 api 기능과 구조를 살펴보라는 게 대체 어떻게 하란 말일까?  

특히 선택 항목 {기능 하나를 선정해 API의 역할, 입출력 구조를 정리해 봅니다.}

이건 어떻게 해야 하는거지? 

{제공하는 기능의 종류와 역할에 대해 분석해 정리} 기능의 역할을 어떻게 구분해야 하지?? 로그인용 인가용 정보제공용 뭐 이런 식으로 나누어야 하나? 

 

쓰라고 하면 어떻게 말을 지어낼 수 있겠지만 역대급 헛소리만 자아낼 거 같다. 

이 주제는 다른 분들의 과제를 더 많이 참고해야겠다. 최근 들어 1~3분 랜덤으로 참고하고 있는데 

한 6개의 글 봐야지.. 왜냐면 어떻게 쓰는지 참고해야 하기 때문이다.. api 문서는 다 비슷비슷할텐데 다들 거기서 뭘 읽어내서 어떻게 정리하는지...   

 

oauth가 뭘ㄲㅏ? api 구조 이런 거 말하는 게 맞나? api 구조 검색해보니 메소드 어쩌고 나오던데 ?? 

메세지랑 메시지 뭐가 표준어? 

 

주말에 더 꼼꼼히 읽고 보충하는 게 좋을랑가? 

역시 스스로 보충해야겠지? 보충하면 아래에 보충 날짜 밝혀야겠다. 

 

그럼 난 뭘 보충해야 하는가? 루브릭을 기준으로 판단해보면... 

- 전체 구조, 제공하는 기능 중 하나 이상을 선정해 해당 API의 상세 구조와 기능을 분석해 정리하였는가? 

이거는 내가 선택한 api 자체가 작아서 뭐 전체 구조랑 상세 기능이랄 게 없는 것 같은데 아닌가? 내가 모를 뿐 더 잘게 쪼갤 수 있고 더 폭넓게 파악할 수 있는건가? 카톡 메시지 api 선택했으면 전체적으로 한번 보고, 공유하기랑 메시지로 나누어서 공유하기를 선정해 상세 구조를 파악한다 뭐 그런 거겠지? 

 

- 해당 오픈 API를 실제 제품 개발에 활용하기 위한 방안에 대해 고민하였는가?

🤔 내가 생각없이 선택한 아이템이 치트키? 소셜 로그인은 활용방안을 고민할 것도 없는데... 캘린더 api 할까도 생각했었는데 그걸 했으면 활용 방안에 대하여 조금이라도 더 고민했을 것 같다. 

 

- 오픈 API가 제공하는 서비스의 범위와 한계에 대해 분석해 정리하였는가?

이이이거는 오픈 아이피 현황이랑 시장을 분석하라는 말이 아니겠지 

그냥 내가 선택한 거의 한계가 뭔지 적으라는 거겠지? 이건 다른 소셜 로그인이랑 비교하면 명확해질텐데 비교대조를 잘하려면 일단 하나의 api 문서를 꼼꼼히 들여다보면서 보는눈을 길러야 하고 그러려면 각 잡고 꼼꼼하게 뜯어보는 시간을 확보해야 돼.... 

 

그... 포스트맨이라는 플랫폼도 탐색하면 좋을 거 같다. 

 


분석 참고 글

 

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#kakaologin

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

보는눈을 키워서 이거랑 비교하면 좋았을텐데 

https://developers.naver.com/docs/login/api/api.md

 

네이버 로그인 API 명세 - LOGIN

네이버 로그인 API 명세 네이버 로그인 API는 네이버 로그인 인증 요청 API, 접근 토큰 발급/갱신/삭제 요청API로 구성되어 있습니다. 네이버 로그인 인증 요청 API는 여러분의 웹 또는 앱에 네이버

developers.naver.com

 

 


W7D3 [코드스테이츠 PMB 16기] 과제

open api 뜯어보기

 

 

 

728x90