회원 탈퇴 시 구글 계정 연동을 해제하는 기능을 구현했다.
이번에도 연결된 서비스가 해제되게 해보겠다.
구글 api 명세서.... 너무 불친절....
구글은 요청 변수(data)로 액세스 토큰을 넘겨주면 된다.
카카오는 액세스 토큰을 헤더로 넘겨주고, 네이버는 요청 변수로 넘기는 대신 data가 더 많았다.
왜.. 왜 3개가 다 다른 걸까..?
통일되어 있으면 처리하기가 좋을 텐데 😂
else if(btnType === 'google') {
await axios.post(this.$store.state.url+'disconnectGoogle', new URLSearchParams({token: accessToken}).toString()).then(response => {console.log(response);})
}
URLSearchParams를 이용할 때, 꼭 객체 형식으로 사용해야 한다.
그렇지 않으면 서버로 넘어갈 때 뒤에 '=' 이게 붙어서 처리가 안 된다..
하나만 넘기더라도 객체 형식으로 넘기도록 하자.
try {
URI uri = new URI("https://oauth2.googleapis.com/revoke?"+token);
ResponseEntity<Object> response = restTemplate.exchange(uri, HttpMethod.POST, null, Object.class);
if (response != null) {
rModel.setState(true);
rModel.setMessage("구글 연동 해제에 성공했습니다.");
rModel.setResult(response);
} else {
rModel.setState(false);
rModel.setMessage("구글 연동 해제 응답을 받지 못했습니다.");
}
} catch (URISyntaxException e) {
rModel.setState(false);
rModel.setMessage("잘못된 URI 형식입니다.");
} catch (Exception e) {
rModel.setState(false);
rModel.setMessage("구글 연동 해제 중 오류가 발생했습니다: " + e.getMessage());
}
구글도 연동 해제 성공!
****************
소셜 계정에서 부여되는 아이디는 고유 값이기 떄문에 db에서 아예 날리지 않으면재가입이 불가능하다.
나같은 경우, 회원 탈퇴 시 계정을 db에서 삭제하는 것이 아니라 delete 날짜 컬럼을 update하기 때문에 재가입 불가능..
소셜 로그인 시 검증 로직을 추가해 주어야 한다.
'서버 > SprintBoot' 카테고리의 다른 글
[스프링부트(Spring Boot)] CLOUDTYPE으로 서버 배포하기 (0) | 2024.04.14 |
---|---|
[스프링부트(Spring Boot)] 소셜 로그인 회원탈퇴(네이버 회원탈퇴) (0) | 2023.09.19 |
[스프링부트(Spring Boot)] 소셜 로그인 회원탈퇴(카카오 회원탈퇴) (0) | 2023.09.19 |
[스프링부트(Spring Boot)] 소셜 로그인 로그아웃(네이버 로그아웃) (0) | 2023.09.18 |
[스프링부트(Spring Boot)] 소셜 로그인 로그아웃(카카오 로그아웃) (0) | 2023.09.15 |