이번주 간편 로그인을 구현하는데에 로그인한 유저의 정보와 유저가 체크한 약관 동의를 저장하는 데에 애를 먹었다. 그에 따른 문제 해결 과정을 적을 예정이다.
간편 로그인 처리 과정을 나열하자면 이렇다.
내가 고전한 문제는 4번이었다.
기본적인 소셜 로그인 과정은 이러하다.

하지만 우리 서비스에는 기본적인 소셜 로그인에서 제공하는 이용약관 외에 선택 동의 여부를 묻는 이용약관이 따로 있다. 그래서 별도의 이용약관 조회가 필요하다.
소셜 로그인의 이용약관 체크는 로그인시 유저의 정보와 같이 넘어오지 않고, 동의 여부를 확인하는 API로 로그인시 받은 AccessToken을 헤더에 담아 보내주어야 동의 여부 값을 받아올 수 있다.
여기서 문제는 내 얄팍한 지식으로는 유저의 소셜 정보와 동의 여부 정보를 두번의 API 조회를 할 수 없었다.
AccessToken을 request 헤더에 담아 리다이렉트를 동의 여부 API로 호출AccessToken과 함께 프론트에 전달 후 프론트에서 이용약관 API 호출 후 값 저장CORS 오류로 실패RestTemplate 사용으로 우리 서비스에 리다이렉트 전에 이용약관 동의 호출 후 저장
- Spring에서 지원하는 객체로 간편하게 Rest 방식 API 방식 API를 호출할 수 있는 Spring 내장 클래스
- Spring 3.0부터 지원, json, xml 응답 모두 가능
- Rest API 서비스를 요청 후 응답 받을 수 있도록 설계
RestTemplate의 메서드를 호출RestTemplate은 MessageConverter를 이용해 Java object를 request body에 담을 message(JSON etc.)로 변환 (메시지 형태는 상황에 따라 다름)ClientHttpRequestFactory에서 ClientHttpRequest를 받아와 요청을 전달ClientHttpRequestFactory가 HTTP 통신으로 요청을 수행RestTemplate이 에러 핸들링ClientHttpResponse에서 응답 데이터를 가져와 오류가 있으면 처리MessageConverter를 이용해 response body의 message를 java object로 변환
HttpComponentsClientHttpRequestFactory 객체를 생성RestTemplate 객체를 생성HttpHeader 클래스를 생성한 후 HttpEntity 객체 삽입exchange() 메소드로 api를 호출HashMap에 추가이와 비슷해 보였던 상황
JWTRefresth토큰을 통한AccessToken재발급 과정을 API 호출을 다시 못해 프론트에 도움을 받았었는데RestTemplate를 사용하면 프론트의 도움 없이AccessToken을 발급할 수 있을 것 같아 구현해보려고 한다.
아는게 힘이라는 생각이 또 드는 한주였다.