카카오 로그인 오픈API를 살펴보자
오늘은 API에 대해 알아보려고 한다. 먼저 API를 이해하기 위해, 인터넷에 검색해본다.
API
정의1. 출처:위키피디아 https://ko.wikipedia.org/wiki/API
"API는 컴퓨터나 컴퓨터 프로그램 사이의 연결이다. 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공한다. (중략) 컴퓨터와 인간을 연결시키는 사용자 인터페이스와 반대로, API는 컴퓨터나 소프트웨어를 서로 연결한다. 직접 사람(최종 사용자)에 의해 사용되도록 고안된 것이 아니며, 대신 소프트웨어에 이를 통합하고자 하는 컴퓨터 프로그래머가 사용하도록 고안되었다. API는 각기 다른 부분으로 구성되기도 하며 프로그래머가 사용할 수 있는 도구나 서비스의 역할을 한다."
정의2. 출처:아마존 웹서비스(aws) https://aws.amazon.com/ko/what-is/api/
"API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말입니다. API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타냅니다. 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다. 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의합니다. API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있습니다."
눈에 띄는 몇가지 문장들이 보인다. 이를 정리하면 다음과 같다.
API는 일종의 소프트웨어 인터페이스로,
컴퓨터나 컴퓨터 프로그램(소프트웨어) 사이의 요청과 응답을 통해 서로 통신하는 방법이다.
API는 요리사와 손님 사이에 요리라는 매개를 두고 소통하는 점원이나 TV와 시청자 사이의 리모콘에 비유되곤 한다.
오픈API
API를 기업이나 공공기관에서 타서비스에서도 사용할 수 있도록 공개하는 경우가 있는데, 이를 오픈API라고 한다. 이렇게 API를 공개하는 이유는 자사의 서비스가 다양한 곳에서 활용될 수 있도록 해서 서비스의 저변을 넓히려는 목적일 수도 있고, 대기업들의 시장 확대가 목적일 수도 있다. 또는 공공의 목적으로 비영리기관에서 무료로 API를 제공하는 경우가 있다.
카카오(Kakao)의 오픈 API
다른 서비스를 이용해도 유난히 자주 그 흔적이 보이는 서비스가 있는데, 바로 카카오(Kakao)다. 카카오는 어떤 API를 제공하고 있을까?
소셜통합 API | 비즈니스 API | 인공지능 API |
- 카카오 로그인 ✅ - 카카오톡 소셜 - 메시지 - 지도/로컬 - 카카오내비 - 카카오 스토리 |
- 카카오싱크 - 카카오톡 채널 - 카카오페이 - 카카오모먼트 - 카카오 키워드광고 - 푸시 알림 |
- 검색 - 음성 - 비전 - 포즈 - 변역 |
카카오는 17가지의 다양한 오픈API를 제공한다. 이는 크게 소셜통합/비즈니스/인공지능 API로 나뉘는데 그중 나는 소셜통합 카테고리 중 카카오 로그인 API를 살펴보려고 한다. 내 서비스에서 카카오 로그인 API를 사용하면 다음 기능을 카카오를 통해 구현할 수 있다. (출처: Kakao developers)
제공 기능
- 로그인: 카카오계정을 통한 빠르고 간편한 사용자 로그인 기능입니다.
- 로그아웃: 사용자 토큰을 만료시켜 로그인 상태를 해제합니다.
- 연결 끊기: 카카오 플랫폼에서 사용자와 앱의 연결을 해제합니다.
- 토큰 정보 보기: 액세스 토큰(Access token)의 정보와 토큰의 유효기간을 제공합니다.
- 사용자 정보 가져오기: 사용자 카카오계정에 등록된 정보를 제공합니다.
- 사용자 정보 저장하기: 사용자 카카오계정에 사용자 정의(Custom)한 서비스 데이터를 저장합니다.
- 동의 내역 확인하기: 서비스에서 현재 사용 중이거나 사용자가 동의한 동의 항목을 확인합니다.
- 동의 철회하기: 불필요한 동의 항목에 대해 사용자 동의를 철회합니다.
아하, 카카오 로그인 API는 말 그대로 '로그인'을 하는 과정을 카카오를 통해 진행할 수 있도록 기능한다. 사용자는 카카오 로그인이 적용된 서비스에 카카오톡 또는 카카오계정 ID와 비밀번호로 손쉽게 로그인할 수 있다. 이런 카카오 로그인 기능은 다른 API와 함께 사용할 수 있는데 내용은 다음과 같다.
현재 한국에서 카카오 계정이 없는 사람을 찾기가 더 힘들 정도로 카카오는 확실하게 자리매김한 상태다. 사용자가 새로운 서비스에 가입할 때 카카오를 통해 번거로운 로그인 과정을 거치지 않아도 된다는 건 서비스와 사용자에게 모두 좋은 선택지가 된다. 카카오 API는 대부분의 기능을 REST API*로 제공한다. 그리고 카카오 로그인 API는 다양한 서비스 개발 환경에서 손쉽게 사용할 수 있도록 RESTful API 뿐만 아니라 Android, iOS, JavaScript 플랫폼용 SDK(Software Development Kit)**를 제공한다.
*RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스. (출처)
HTTP 요청을 보낼 수 있는 환경이라면 어디서든 RESTful API를 사용할 수 있다.
**SDK는 소프트웨어 개발 키트. 일반적으로 기본 SDK에는 컴파일러, 디버거, API가 포함됨. (출처)
사전 준비
카카오 API를 사용하기 전에 먼저 개발자 웹사이트에 앱을 등록해야한다.
여기 기술한 기본 정보는 카카오 로그인 동의 화면, 연결된 서비스 관리, 카카오톡 메시지 하단의 출처 등에 표시된다. 앱 등록이 완료되었다면 카카오 로그인API를 사용하기 위해 카카오디벨로퍼스 웹사이트에서 카카오 로그인을 활성화 시킨다. 그리고 OpenID Connect(선택) 상태를 확인하고 Redirect URI(필수)를 등록한다.
Redirect URI까지 등록을 마치면 사용자가 동의할 항목을 지정한다. 동의 항목의 종류는 개인정보 동의 항목, 접근권한 동의 두 종류로 나뉘며 앱 상태에 따라 항목 필수동의 / 선택동의 / 이용 중 동의 / 사용안함 단계로 나뉜다. 이후에는 이런 순서로 진행된다.
- 카카오 대표 채널 설정
- 개인정보 국외이전 정보 등록
- 연결 끊기 등록(선택)
- 사용자 프로퍼티 추가 및 삭제
- 보안 코드 생성
- Logout Redirect URI 등록(선택)
이 모든 단계가 끝났다면 내 서비스에 API를 사용할 준비가 된 것이다.
어떻게 작동하는가
아래에 카카오 로그인이 어떻게 이루어지는지 그 과정을 간략히 나타낸 시퀀스 다이어그램이 있다.
위 그림처럼 서비스 서버와 카카오 서버는 Restful API 요청과 응답을 주고 받는다.
- Create(생성) : POST
- Read(읽어오기) : GET
- Update(변경) : PUT(전체)/PATCH(일부)
- Delete(삭제) : DELETE
+(보충) 이에 관한 내용은 이후 기능을 하나 선정해 API 역할과 입출력 구조를 정리해보기로 한다.