From 43be2a2caed4c1afce84d0eea8c1e0d07efa8b3f Mon Sep 17 00:00:00 2001 From: Dongseok Kang Date: Tue, 2 Jan 2024 10:26:45 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20=ED=9A=8C=EC=9B=90=ED=83=88=ED=87=B4=20a?= =?UTF-8?q?pi=20=EC=88=98=EC=A0=95=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 카카오 연결 끊기 추가 #63 --- fubao-server-secret | 2 +- .../domain/service/OAuthLoginServiceImp.java | 1 + .../service/oauth/RequestOAuthInfoService.java | 5 +++++ .../service/oauth/kakao/KakaoApiClient.java | 16 +++++++++++++++- .../global/common/oauth/OAuthApiClient.java | 2 ++ 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/fubao-server-secret b/fubao-server-secret index cf08f19..0b51baa 160000 --- a/fubao-server-secret +++ b/fubao-server-secret @@ -1 +1 @@ -Subproject commit cf08f199b0f7e61b2fca33d7b12f43696c9c9ad3 +Subproject commit 0b51baa80c1eb47132cb5d61b382d0ba053dc415 diff --git a/src/main/java/com/fubao/project/domain/service/OAuthLoginServiceImp.java b/src/main/java/com/fubao/project/domain/service/OAuthLoginServiceImp.java index cc86423..2b08fa3 100644 --- a/src/main/java/com/fubao/project/domain/service/OAuthLoginServiceImp.java +++ b/src/main/java/com/fubao/project/domain/service/OAuthLoginServiceImp.java @@ -68,6 +68,7 @@ public void deactivation(UUID memberId) { Post::delete ); member.deactivation(); + requestOAuthInfoService.disconnect(member.getOauthProvider(),member.getProviderId()); } private Member findById(UUID memberId) { diff --git a/src/main/java/com/fubao/project/domain/service/oauth/RequestOAuthInfoService.java b/src/main/java/com/fubao/project/domain/service/oauth/RequestOAuthInfoService.java index 4c4a788..be6b88a 100644 --- a/src/main/java/com/fubao/project/domain/service/oauth/RequestOAuthInfoService.java +++ b/src/main/java/com/fubao/project/domain/service/oauth/RequestOAuthInfoService.java @@ -26,4 +26,9 @@ public OAuthInfoResponse request(OAuthLoginParams params) { String accessToken = client.requestAccessToken(params); return client.requestOAuthInfo(accessToken); } + + public void disconnect(OAuthProvider provider, String providerId) { + OAuthApiClient client = clients.get(provider); + client.disconnect(providerId); + } } diff --git a/src/main/java/com/fubao/project/domain/service/oauth/kakao/KakaoApiClient.java b/src/main/java/com/fubao/project/domain/service/oauth/kakao/KakaoApiClient.java index 838ec5b..fe8593d 100644 --- a/src/main/java/com/fubao/project/domain/service/oauth/kakao/KakaoApiClient.java +++ b/src/main/java/com/fubao/project/domain/service/oauth/kakao/KakaoApiClient.java @@ -28,7 +28,8 @@ public class KakaoApiClient implements OAuthApiClient { @Value("${oauth.kakao.client-id}") private String clientId; - + @Value("${oauth.kakao.admin-key}") + private String adminKey; private final RestTemplate restTemplate; @Override @@ -76,4 +77,17 @@ public OAuthInfoResponse requestOAuthInfo(String accessToken) { return restTemplate.postForObject(url, request, KakaoInfoResponse.class); } + + @Override + public void disconnect(String providerId) { + String url = apiUrl + "/v1/user/unlink"; + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + httpHeaders.set("Authorization", "KakaoAK " + adminKey); + MultiValueMap body = new LinkedMultiValueMap<>(); + body.add("target_id_type", "user_id"); + body.add("target_id", providerId); + HttpEntity request = new HttpEntity<>(body, httpHeaders); + restTemplate.exchange(url, HttpMethod.POST, request, String.class); + } } diff --git a/src/main/java/com/fubao/project/global/common/oauth/OAuthApiClient.java b/src/main/java/com/fubao/project/global/common/oauth/OAuthApiClient.java index 776cf00..9290291 100644 --- a/src/main/java/com/fubao/project/global/common/oauth/OAuthApiClient.java +++ b/src/main/java/com/fubao/project/global/common/oauth/OAuthApiClient.java @@ -6,4 +6,6 @@ public interface OAuthApiClient { OAuthProvider oAuthProvider(); String requestAccessToken(OAuthLoginParams params); OAuthInfoResponse requestOAuthInfo(String accessToken); + + void disconnect(String providerId); }