출처:
https://www.youtube.com/watch?v=NwQ_55l0Za4&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=66
코드를 받을건데
받는 방식이 이렇게 GET 방식이다.
GET
https://kauth.kakao.com/oauth/authorize?client_id={REST_API_KEY}&redirect_uri={REDIRECT_URI}&response_type=code
Host:
kauth.kakao.com
위 이미지는 강의화면인데 내 글 작성 시점으로 해당
다운로드 안내 위치가 다른 곳에 있다.(아래 이미지 참고)
[JavaScript]-[리소스 다운로드]
그전에 URL위치 잘못된거 수정좀
http://localhost:8080 -> http://localhost:8000
로그인 : 로그인 화면탭,
로그아웃 : 고급탭,
도메인 : 플랫폼 탭에서 수정완료
[축약] - [Middle] - [다운로드(.png)]
다운받은거 이렇게 붙여넣기.
{app_key} 부분에는 클라이언트 키 붙여 넣고
{redirect_uri}에는 로그인 주소 붙여넣어주기
이런식의 주소가 완성된다.
여기 붙여넣기
이런식으로 뜨고
응답받은 주소는 위와 같고
이렇게 되면 정상적으로 로그인 된 것임.
왜 404 뜨냐면 해당 Controller 안만들어서 그럼
만들어보자.
인증완료됨
액세스 토큰 받을거임
내 개인정보 응답받기 위해 토큰 필요함
47,48,49,50행 두번째 인자값들 같은 경우는 변수화 해놓고 하는게 사실 좋다.
package com.cosblog.controller;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.stereotype.Controller;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate;
import com.cosblog.config.auth.PrincipalDetail;
//인증이 안된 사용자들이 출입할 수 있는 경로를 /auth만 허용할 것임
//그냥 주소가 /이면 index.jsp 허용
//static이하에 있는 /js/**, /css/**, /image/**
@Controller
public class UserController {
@GetMapping("/auth/joinForm")
public String joinForm() {
return "user/joinForm";
}
@GetMapping("/auth/loginForm")
public String loginForm() {
return "user/loginForm";
}
@GetMapping("/auth/kakao/callback")
public @ResponseBody String kakaoCallback(String code) { //Data를 리턴해주는 컨트롤러 함수
//POST 방식으로 key=value 데이터를 요청(카카오쪽으로)
//Retrofit2
//OkHttp
//RestTemplate
RestTemplate rt = new RestTemplate();
//HttpHeader 오브젝트 생성
HttpHeaders headers = new HttpHeaders();
headers.add("Content-type","application/x-www-form-urlencoded;charset=utf-8");
//HttpBody 오브젝트 생성
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("grant_type","authorization_code");
params.add("client_id", "84d0b808b23f632f987e7ec4dd0bbf40");
params.add("redirect_uri", "http://localhost:8000/auth/kakao/callback");
params.add("code", code);
//HttpHeader와 HttpBody를 하나의 오브젝트에 담기
HttpEntity<MultiValueMap<String, String>> kakaoTokenRequest =
new HttpEntity<>(params, headers);
//Http 요청하기 - Post방식으로 - 그리고 response 변수의 응답 받음.
ResponseEntity response = rt.exchange("https://kauth.kakao.com/oauth/token",
HttpMethod.POST,
kakaoTokenRequest,
String.class
);
return "카카오 토큰 요청 완료: 토큰요청에 대한 응답"+response;
}
@GetMapping("/user/updateForm")
public String updateForm(@AuthenticationPrincipal PrincipalDetail principal) {
return "user/updateForm";
}
}
다 작성하고 나면 아래와 같이 뜨는데
복사해서
json parser 싸이트 검색하여 붙여넣기 (그냥 JSON viewer 싸이트임)
이 토큰으로 카카오로 로그인한 회원 개인정보 요청할 것임.
'Spring > Spring boot' 카테고리의 다른 글
스프링부트 강좌 66강(블로그 프로젝트) - 댓글 디자인하기 (0) | 2022.01.26 |
---|---|
스프링부트 강좌 65강(블로그 프로젝트) - 카카오 로그인 서비스 구현 완료 (0) | 2022.01.26 |
스프링부트 강좌 63강(블로그 프로젝트) - 카카오 로그인 OAuth2.0 개념이해 (0) | 2022.01.25 |
스프링부트 강좌 62강(블로그 프로젝트) - 카카오 로그인 환경설정 (0) | 2022.01.25 |
스프링부트 강좌 61강(블로그 프로젝트) - 회원수정 2 (0) | 2022.01.25 |
댓글