카카오 API를 이용해서 인증하는 과정을 정리해보자. 카카오 로그인 페이지를 띄워서 사용자로부터 로그인 및 각 리소스의 접근 권한 동의를 얻은 다음 액세스 토큰을 얻는다. 이후에 사용하는 API는 획득한 액세스 토큰을 가지고 요청할 수 있다.

인증 페이지

요청 주소:

https://kauth.kakao.com/oauth/authorize?client_id=&redirect_uri=&response_type=code

요청 쿼리:

{
  "client_id": "앱 고유의 API 키",
  "redirect_uri`: "요청  콜백주소", //이 주소의 파라메터로 code 값이 반환된다. 테스트에서는 내부 서버를 돌려 http://localhost:9000 설정할  있다. 
}

각 각의 파라메터를 설정하여 URI를 호출하면 카카오 로그인 페이지가 로딩된다. “Accept” 버튼을 클릭하면 redirect_uri에 설정된 주소로 code 파라메터와 함께 리다이렉트 될 것이다.

응답형식:

{redirect_url}?code={할당된 코드값}

엑세스 토큰 요청

보통 다른 서비스는 사용자가 수락후 바로 액세스 코드가 반환된다. 그러나 카카오 인증은 code 값을 먼저 받고 이를 통해 엑세스 토큰을 요청해야 한다.

요청 주소:

POST https://kauth.kakao.com/oauth/token

요청 바디:

{
  "code": "반환받은 code값",
  "grant_type": "authorization_code",
  "client_id": "설정한 앱의 클라이언트 아이디",
  "redirect_uri": "리다이렉트 주소" // 실제  쪽으로 콜백되지는 않는다. 바로 응답 바디를 확인할  있다.
}

응답 형식:

{
    "access_token": "string", //액세스 코드 
    "token_type": "bearer", // 토큰 타입. bearer로 고정 
    "refresh_token": "string", // 리프레시 토큰
    "expires_in": "string", // 만료일
    "scope": "story_publish story_read profile" // 권한 범위 
}

유저 프로필 요청

이후에서는 이 액세스토큰으로 요청할 수 있다. 사용자 프로필을 조회해 보자.

요청 주소:

https://kauth.kakao.com/v1/user/me

엑세스 토큰은 헤더값에 설정한다. 설정시 ‘Bearer ‘ 문자을 액세스토큰 앞에 추가하여 요청한다.

Authorization: Bearer {엑세스 토큰}

응답 형식:

{
    "id": "number", // 카카오 아이디 
    "properties": {
        "nickname": "string", // 이름 
        "profile_image": "string", // 프로필 이미지 주소
        "thumbnail_image": "string" // 프로필 이미지 썸네일 주소 
    }
}

참고