소셜 계정으로 가입한 회원이 탈퇴를 하게 된다면,
자체적으로 탈퇴 처리만 해도 되지만, 그 후 연결을 끊어주는 방법도 있다.
연결을 끊어주지 않으면 해당 소셜 계정에 계속 뜰 것이다..
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#unlink
액세스 토큰을 이용하는 것과, 어드민 키를 이용하는 두 가지 방법이 있다.
서비스 종료 등의 이유로 액세스 토큰을 이용하여 연결을 끊을 수 없는 경우가 있어서 어드민 키를 이용하는 방법을 지원한다고 한다.
하지만 내 프로젝트에서는 액세스 토큰을 써도 충분하다고 판단해서 액세스 토큰을 이용했다.
async disconnect() {
const accessToken = JSON.parse(atob(sessionStorage.getItem('access_token')));
const btnType = sessionStorage.getItem('socialType');
const kakaoHeader = {
headers: {
'Authorization' : `Bearer ${accessToken}`,
'btnType' : btnType
}
}
if(btnType === 'kakao') {
await axios.post(this.$store.state.url + 'disconnectKakao', {}, kakaoHeader)
}
'Authorization' : `Bearer ${accessToken}`,
필수로 넘겨줄 값은 헤더의 액세스 토큰이 전부!
try {
URI uri = new URI("https://kapi.kakao.com/v1/user/unlink");
// 헤더 설정
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", authHeader);
HttpEntity<String> entity = new HttpEntity<>("parameters", headers);
ResponseEntity<Object> response = restTemplate.exchange(uri, HttpMethod.POST, entity, Object.class);
if (response.getBody() != null) {
rModel.setState(true);
rModel.setMessage("카카오 연동 해제에 성공했습니다.");
rModel.setResult(response.getBody());
} 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)] 소셜 로그인 회원탈퇴(구글 연동 해제) (0) | 2023.09.19 |
---|---|
[스프링부트(Spring Boot)] 소셜 로그인 회원탈퇴(네이버 회원탈퇴) (0) | 2023.09.19 |
[스프링부트(Spring Boot)] 소셜 로그인 로그아웃(네이버 로그아웃) (0) | 2023.09.18 |
[스프링부트(Spring Boot)] 소셜 로그인 로그아웃(카카오 로그아웃) (0) | 2023.09.15 |
[스프링부트(Spring Boot)] 소셜 로그인(구글 로그인) (0) | 2023.09.13 |