내일배움캠프 39일차 TIL - 소셜 로그인 API(OAuth)

2024. 6. 12. 09:04·⛺스파르타코딩클럽

240612

오늘의 학습 

    ●  1.  카카오 소셜 로그인 API

    ●  2.  API 요청하기

    ●  3.  인가코드 받기

    ●  4.  토큰 발급 받기

    ●  5.  사용자 정보 가져오기 ( 토큰을 이용 )

 

카카오 소셜 로그인 API

모든 출처와 참고는 카카오 로그인 REST API 문서에서 가지고 왔습니다.

(출처) API 문서 - https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api

 

Kakao Developers

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

developers.kakao.com

 

카카오 소셜 로그인 API 이용하기 전 필수로 해야할 일

1. 애플리케이션 추가

2. 추가가 성공적으로 되었으면 카테고리에서 앱 키로 이동 후 REST API 키를 확인한다.

( 해당 앱 키는 인증키이며, 카카오 서버로 요청을 보낼 때 사용되는 키이다. 무조건 있어야 한다. )

애플리케이션 추가하기를 통해 해당 애플리케이션이 어떠한 용도로 쓰일지 등등을 넣어 만들어줘야한다.
앱 키

 


요청 보내기 

카카오 소셜 로그인을 구현하기 위해서는 어떠한 요청과 어떤 걸 발급 받는지 알아야 한다.

출처 ( 카카오 로그인 API 공식 문서 ) https://developers.kakao.com/docs/latest/ko/kakaologin/common

 

카카오로 로그인을 할 시 인가 코드 발급은 필수이며, 발급이 된 인가 코드를 통해 토큰 발급 또한 필수이다.

( 이러한 과정을 통해 로그인이 완료가 된다. )

 

1. 인가 코드 받기 ( 토큰 발급을 위한 코드 )

공식 문서를 보면 위의 사진처럼 인가 코드를 받기 위해선 해당 API로 요청을 보내줘야 한다.

그 후 쿼리 파라미터 방식을 이용해 필수로 넣어줘야 할 key&value 값들을 넣어서 요청을 보내줘야 한다.

그러면 redirect_uri에 해당하는 api로 code라는 value에 인증 코드를 넣어서 요청을 보내주게 된다.

( 넘어온 인증 코드를 통해 토큰을 발급을 받을 수 있다. )

 

꿀팁, 해당 인가코드를 요청하는 api로 쿼리 파라미터 형식으로 필수 값을 넣어 요청을 보내게 되면 카카오 서버에서 로그인 페이지 따로 반환을 해주면서 쿼리 파라미터 응답으로 요청할 때 넣은 값을 그대로 다시 돌려주게 된다.

그 후, 카카오 로그인 페이지에서 로그인을 할 시 redirect_uri 에 넣은 api로 인가 코드를 넣어 요청을 보내게 된다.

돌아온 인가코드를 통해 토큰을 발급 받는 순간, 로그인이 되는 방식이다.

 

2. 토큰 받기 ( 요청 )

토큰을 받기 위해서는 위의 공식 문서 사진처럼 POST 방식으로 해당 URL로 요청을 보내면 된다.

요청을 보낼 때 필수로 요청 헤더 Content-type을 위와 같이 지정을 해줘야 하며, 요청 본문(Body)에는 grant_type, client_id, redirect_uri, code 를 필수적으로 보내줘야한다. 이때, code는 받아온 기존에 인증 코드를 넣어주게 된다.

 

3. 토큰 받기 ( 응답 )

요청에 대한 응답으로는 token_type인 bearer과 access_token 토큰 값을 받을 수 있다. 또한, expires_in(토큰 만료 시간),

refresh_token, refresh_token_expires_in(리프레시 토큰 만료시간) 등등 여러개가 넘어오게 된다.

( 해당 토큰을 이용해서 여러가지 요청을 보낼 수 있게된다. 그 중 사용자 정보 가져오기를 할 것이다. )

 

4. 사용자 정보 가져오기 ( 카카오 계정 정보 )

위와 같이 헤더에 필수값을 넣어 요청을 보내게 되면 해당 카카오 계정의 사용자 정보를 가져와서 이용할 수 있게 된다.

이후, 넘어오는 responese는 json 문자열로 들어오며, 해당 문자열을 ObjectMapper를 이용해 간편하게 json 문자열의 값을 뽑아서 사용할 수 있게 된다.

 

 

# 오늘의 회고

오늘은 카카오에서 제공을 해주는 오픈API인 소셜로그인을 배웠는데 좀 더 자세히 알고싶은 생각에 카카오 api 공식문서를 참고하여 어떠한 방식으로 API를 요청해야하고 응답받는지 알 수 있어서 좋았습니다. 스스로 공식문서를 참고하면서 공부를 하니 동작 흐름에 대해 더욱 쉽게 이해를 할 수 있어서 좋았다.

'⛺스파르타코딩클럽' 카테고리의 다른 글

내일배움캠프 41일차 TIL - Spring AOP  (1) 2024.06.14
내일배움캠프 40일차 TIL - Spring Test  (0) 2024.06.13
내일배움캠프 38일차 TIL - 뉴스피드 프로젝트  (0) 2024.06.12
내일배움캠프 37일차 TIL - 시큐리티 수정 중  (2) 2024.06.10
내일배움캠프 36일차 TIL - 스프링 빈 라이프사이클  (0) 2024.06.07
'⛺스파르타코딩클럽' 카테고리의 다른 글
  • 내일배움캠프 41일차 TIL - Spring AOP
  • 내일배움캠프 40일차 TIL - Spring Test
  • 내일배움캠프 38일차 TIL - 뉴스피드 프로젝트
  • 내일배움캠프 37일차 TIL - 시큐리티 수정 중
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (152)
      • 🎓방송통신대학교 (26)
        • 🖥️컴퓨터과학과 (1)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • ⚙️컴퓨터의 이해 (11)
        • 🏛️세계의정치와경제 (3)
      • 📚Computer Science (0)
      • 🛠️Backend (3)
      • ☕Java (20)
        • 📝Java Programming (19)
        • 🧩Java Design Pattern (1)
      • 🌳Spring (9)
        • 🌱Spring Framework (6)
        • 🌱Spring Security (1)
      • ⚡Python (13)
      • 🛢️Database (0)
      • 🌿GitHub (1)
      • 🌐 Network (7)
        • 📜HTTP (7)
      • 🚀DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • ⛺스파르타코딩클럽 (65)
      • 잡담 (1)
      • 정리가 필요한 글 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    방통대
    방송대
    컴파일러
    spring
    파이썬
    입출력
    클래스
    유비쿼터스
    Java
    스프링
    세계화
    클라우드
    방송통신대학교
    자바
    Python
    다형성
    Spring Framework
    유비쿼터스 컴퓨팅
    컴퓨터의 이해
    유비쿼터스 컴퓨팅개론
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
내일배움캠프 39일차 TIL - 소셜 로그인 API(OAuth)
상단으로

티스토리툴바