suyeoniii
수바리의 코딩일기
suyeoniii
전체 방문자
오늘
어제
  • 분류 전체보기
    • 🪓 삽질일기
    • 🔙 Backend
      • 🟢 Node.js
      • 🐈‍⬛ NestJS
      • 🌿 Springboot
      • 🗄️ Database
    • 🌸 Frontend
      • 🌐 React.js
      • 💚 Vue.js
      • 🤖 Android
    • 🕹️ 알고리즘
      • 💯 코딩테스트
    • 🔠 프로그래밍 언어
      • 💛 Javascript
      • 💙 Typescript
    • 🚀 배포
    • 🐱 Git
    • etc.
      • 개발환경
      • 오픈 API
      • 개념정리
      • 커뮤니티
    • AI
      • 생성형 AI
    • 회고

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 회고
  • MySQL
  • node
  • html
  • nodejs
  • springboot
  • javascript
  • ubuntu
  • Spring Boot
  • AWS
  • android
  • MAC
  • node.js
  • C++
  • java
  • Git
  • ec2
  • 알고리즘
  • vue
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
suyeoniii

수바리의 코딩일기

[Spring Boot] 카카오 로그인 API 구현 (2) - Access token으로 사용자 정보 가져오기
🔙 Backend/🌿 Springboot

[Spring Boot] 카카오 로그인 API 구현 (2) - Access token으로 사용자 정보 가져오기

2021. 8. 15. 16:46
반응형

*만약 클라이언트 개발자가 따로 있다면 클라이언트 쪽에서 access_token을 전달해주기 때문에 이 포스팅부터 수행하면 된다.

 

 

만약 혼자 구현해야한다면 아래 글부터 진행하여 테스트할 수 있다.

카카오 로그인 API 구현(1)

https://suyeoniii.tistory.com/79

 

[Spring Boot] 카카오 로그인 API 구현 (1) - Access token 발급받기

Spring Boot를 이용해서 카카오 로그인을 구현해보았다. Node.js로 구현할 때보다 복잡해보였는데, 구현하고 나니까 그래도 생각보단 덜 복잡했다! 동작 흐름 카카오를 이용한 소셜로그인 구현 Flow이

suyeoniii.tistory.com

 

 

이제 access_token을 받았으니, 이 token을 이용해서 카카오 서버에서 사용자 정보(닉네임, 이메일 등)를 받아올 수 있다.

이 정보를 이용하여 자체적으로 회원가입을 진행하면 된다.

만약 받은 정보가 이미 DB에 들어가있다면 로그인 과정을 진행하면 된다.

 

Access_Token에서 사용자 정보 조회


사용자 정보 가져오기

 

 

GET 또는 POST방식으로

Header에 Authorization: Bearer {ACCESS_TOKEN}을 넣어주면 된다고 한다.

*Bearer뒤에 공백 넣어야하는 것 주의

 

public void createKakaoUser(String token) throws BaseException {

	String reqURL = "https://kapi.kakao.com/v2/user/me";

    //access_token을 이용하여 사용자 정보 조회
    try {
       URL url = new URL(reqURL);
       HttpURLConnection conn = (HttpURLConnection) url.openConnection();

       conn.setRequestMethod("POST");
       conn.setDoOutput(true);
       conn.setRequestProperty("Authorization", "Bearer " + token); //전송할 header 작성, access_token전송

       //결과 코드가 200이라면 성공
       int responseCode = conn.getResponseCode();
       System.out.println("responseCode : " + responseCode);

       //요청을 통해 얻은 JSON타입의 Response 메세지 읽어오기
       BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
       String line = "";
       String result = "";

       while ((line = br.readLine()) != null) {
           result += line;
       }
       System.out.println("response body : " + result);

       //Gson 라이브러리로 JSON파싱
       JsonParser parser = new JsonParser();
       JsonElement element = parser.parse(result);

       int id = element.getAsJsonObject().get("id").getAsInt();
       boolean hasEmail = element.getAsJsonObject().get("kakao_account").getAsJsonObject().get("has_email").getAsBoolean();
       String email = "";
       if(hasEmail){
           email = element.getAsJsonObject().get("kakao_account").getAsJsonObject().get("email").getAsString();
       }

       System.out.println("id : " + id);
       System.out.println("email : " + email);

       br.close();

       } catch (IOException e) {
            e.printStackTrace();
       }
 }

이전 글에서 API 통신했던 코드를 조금 변형하여, header를 넣어주고, 사용자 정보 JSON을 파싱해주었다.

 

200코드가 반환되면, 성공적으로 access_token에서 사용자 정보가 조회된다.

이후, 받은 사용자 정보를 이용하여 자체적으로 회원가입 또는 로그인을 진행하면 된다!

 

 

참고 : https://antdev.tistory.com/36?category=807235

반응형
저작자표시 (새창열림)

'🔙 Backend > 🌿 Springboot' 카테고리의 다른 글

[Spring Boot] 오류: Cannot construct instance of (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)  (1) 2022.04.05
[JUnit] assertThat deprecated  (0) 2021.09.12
[Spring Boot] 카카오 로그인 API 구현 (1) - Access token 발급받기  (3) 2021.08.15
[Springboot][EC2] 로컬에서 빌드하고 빌드파일만 업로드하기  (0) 2021.07.05
[SpringBoot][AWS EC2] nohup을 이용하여 무중단 서비스 만들기  (1) 2021.05.14
    '🔙 Backend/🌿 Springboot' 카테고리의 다른 글
    • [Spring Boot] 오류: Cannot construct instance of (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
    • [JUnit] assertThat deprecated
    • [Spring Boot] 카카오 로그인 API 구현 (1) - Access token 발급받기
    • [Springboot][EC2] 로컬에서 빌드하고 빌드파일만 업로드하기
    suyeoniii
    suyeoniii
    개발관련 문제 해결, 공부한 내용 등을 업로드합니다.

    티스토리툴바