[Nest] 카카오 로그인 API 사용하기

찐찐·2022년 6월 4일
1

카카오 로그인 REST API 사용하기

0. 사전 환경 설정

  1. kakao developers내 애플리케이션 등록하고 key 확인하기
    • 내 애플리케이션 > 앱 설정 > 요약 정보에서 확인 가능
    • REST API를 사용하니 해당하는 key를 확인하면 된다.
  2. 내 애플리케이션 > 제품 설정 > 카카오 로그인에서 카카오 로그인 활성화
  3. 내 애플리케이션 > 제품 설정 > 카카오 로그인에서 redirect URI 등록
    • 해당 URL로 엔드 포인트를 만들어서 코드를 작성한다.

1. 인가 코드 받기

인가 코드는 카카오 로그인에 사용할 access_token을 발급받기 위해 필요한 코드다.

  1. 해당 URL을 통해 request
// GET
https://kauth.kakao.com/oauth/authorize?client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code
  • REST API KEY: 사전 환경 설정 1번에서 확인한 key
  • REDIRECT_URL: 사전 환경 설정 3번에서 등록한 URI
  1. Redirect URL의 parameter code={code}로 인가 코드가 전달된다.
// constroller
@Get('/kakao/callback')
kakaoLogin(@Query('code') code: string) {
  return this.signupService.kakaoLogin(code);
}
  • Nest에서는 @Query를 통해 받아올 수 있다.

2. 인가 코드를 통해 access_token 받기

여기부터는 service kakaoLogin 내부에서 진행

access_token 은 사용자 정보에 접근하기 위해 필요한 토큰이다.

  1. 해당 URL을 통해 request
//POST
const kakao_api_url = `https://kauth.kakao.com/oauth/token
	?grant_type=authorization_code
	&client_id=${this.config.get('KAKAO_CLIENT_ID')}
	&redirect_url=${this.config.get('KAKAO_REDIRECT_URL')}
	&code=${code}`;
  • grant type: authorization_code 고정
  • client id: 사전 환경 설정 1번에서 확인한 REST API KEY
  • redirect url: 사전 환경 설정 3번에서 등록한 URI
  • code: 위의 과정(1. 인가 코드 받기)을 통해 발급받은 인가 코드
  1. response로 토큰이 전달된다.
// request 보내기
const token_res = await firstValueFrom(this.axios.post(kakao_api_url));
const access_token: string = token_res.data.access_token;
  • response의 자세한 내용은 여기 참고

3. access_token 을 통해 사용자 정보 받아오기

  1. 해당 URL을 통해 request
// GET, POST
'https://kapi.kakao.com/v2/user/me'
// header
Authorization: `Bearer ${access_token}`
  1. response로 사용자 정보가 전달된다.
const user_ifo = await firstValueFrom(
  this.axios.get('https://kapi.kakao.com/v2/user/me', {
    headers: {
      Authorization: `Bearer ${access_token}`
    },
  }),
);
const user_id: string = user_ifo.data.id;
  • response의 자세한 내용은 여기 참고
profile
백엔드 개발자 지망생

0개의 댓글