회원 탈퇴 시 네이버와의 계정 연동을 해제하는 기능을 구현해보았다.
로그아웃과 동일!
연결된 서비스에서 사라지게 만드는 것이 목표!
개발 가이드에 아주 친절하게 잘 나와 있다.
카카오는 헤더만 넘겼는데, 네이버는 요청 변수(data)만 넘기면 된다.
const accessToken = JSON.parse(atob(sessionStorage.getItem('access_token')));
const btnType = sessionStorage.getItem('socialType');
else if(btnType === 'naver') {
this.naverDisconnectParams.access_token = accessToken;
await axios.post(this.$store.state.url+'disconnectNaver', new URLSearchParams(this.naverDisconnectParams).toString())
}
매개변수는 아래와 같다.
naverDisconnectParams: {
client_id: process.env.VUE_APP_NAVER_CLIENT_ID,
client_secret: process.env.VUE_APP_NAVER_CLIENT_SECRET_ID,
grant_type: 'delete',
access_token: '',
service_provider: 'NAVER'
},
위에 링크해둔 네이버 공식 문서에는 service_provider: 'NAVER' 부분이 빠져 있다.
토큰 삭제 부분에는 제대로 나와 있는데, 연동 해제에는 나와 있지 않다.
그렇지만 응답에 오류로 service_provider가 없다고 구체적으로 제시해 주어서 쉽게 해결할 수 있었다.
try {
URI uri = new URI("https://nid.naver.com/oauth2.0/token?"+params);
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 |