Skip to content

Commit c6d7656

Browse files
authored
Merge pull request #9 from Neighbors-dev/develop
[FEAT] 카카오 로그인 redirect url 환경 변수 추가
2 parents 24ffee0 + c4e2753 commit c6d7656

File tree

8 files changed

+48
-15
lines changed

8 files changed

+48
-15
lines changed

.deploy/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ ARG JWT_EXPIRED_IN
99
ARG REFRESH_TOKEN_EXPIRED_IN
1010
ARG KAKAO_CLIENT_KEY
1111
ARG KAKAO_REDIRECT_URL
12+
ARG KAKAO_REDIRECT_URL_TEST
1213

1314
# ARG 값을 ENV로 설정하여 런타임에서도 사용 가능하도록 설정
1415
ENV DATASOURCE_URL_LOCAL=$DATASOURCE_URL_LOCAL
@@ -19,6 +20,7 @@ ENV JWT_EXPIRED_IN=$JWT_EXPIRED_IN
1920
ENV REFRESH_TOKEN_EXPIRED_IN=$REFRESH_TOKEN_EXPIRED_IN
2021
ENV KAKAO_CLIENT_KEY=$KAKAO_CLIENT_KEY
2122
ENV KAKAO_REDIRECT_URL=$KAKAO_REDIRECT_URL
23+
ENV KAKAO_REDIRECT_URL_TEST=$KAKAO_REDIRECT_URL_TEST
2224

2325
# JAR 파일 복사
2426
ARG JAR_FILE=build/libs/*.jar

.deploy/neighbors-blue-deploy.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ services:
2121
- REFRESH_TOKEN_EXPIRED_IN=${REFRESH_TOKEN_EXPIRED_IN}
2222
- KAKAO_CLIENT_KEY=${KAKAO_CLIENT_KEY}
2323
- KAKAO_REDIRECT_URL=${KAKAO_REDIRECT_URL}
24+
- KAKAO_REDIRECT_URL_TEST=${KAKAO_REDIRECT_URL_TEST}
2425

2526
networks:
2627
app-network:

.deploy/neighbors-green-deploy.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ services:
2121
- REFRESH_TOKEN_EXPIRED_IN=${REFRESH_TOKEN_EXPIRED_IN}
2222
- KAKAO_CLIENT_KEY=${KAKAO_CLIENT_KEY}
2323
- KAKAO_REDIRECT_URL=${KAKAO_REDIRECT_URL}
24+
- KAKAO_REDIRECT_URL_TEST=${KAKAO_REDIRECT_URL_TEST}
2425

2526
networks:
2627
app-network:

.github/workflows/CD.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ jobs:
1818
REFRESH_TOKEN_EXPIRED_IN: ${{ secrets.REFRESH_TOKEN_EXPIRED_IN }}
1919
KAKAO_CLIENT_KEY: ${{ secrets.KAKAO_CLIENT_KEY }}
2020
KAKAO_REDIRECT_URL: ${{ secrets.KAKAO_REDIRECT_URL }}
21+
KAKAO_REDIRECT_URL_TEST: ${{ secrets.KAKAO_REDIRECT_URL_TEST }}
2122

2223
steps:
2324

@@ -67,6 +68,7 @@ jobs:
6768
--build-arg REFRESH_TOKEN_EXPIRED_IN=${{ secrets.REFRESH_TOKEN_EXPIRED_IN }} \
6869
--build-arg KAKAO_CLIENT_KEY=${{ secrets.KAKAO_CLIENT_KEY }} \
6970
--build-arg KAKAO_REDIRECT_URL=${{ secrets.KAKAO_REDIRECT_URL }} \
71+
--build-arg KAKAO_REDIRECT_URL_TEST=${{ secrets.KAKAO_REDIRECT_URL_TEST }} \
7072
--platform linux/amd64 \
7173
-f ./.deploy/Dockerfile \
7274
-t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }} .
@@ -107,6 +109,7 @@ jobs:
107109
echo "REFRESH_TOKEN_EXPIRED_IN=${{ secrets.REFRESH_TOKEN_EXPIRED_IN }}" >> ./.env
108110
echo "KAKAO_CLIENT_KEY=${{ secrets.KAKAO_CLIENT_KEY }}" >> ./.env
109111
echo "KAKAO_REDIRECT_URL=${{ secrets.KAKAO_REDIRECT_URL }}" >> ./.env
112+
echo "KAKAO_REDIRECT_URL_TEST=${{ secrets.KAKAO_REDIRECT_URL_TEST }}" >> ./.env
110113
chmod +x deploy.sh
111114
source deploy.sh
112115

src/main/java/com/neighbors/tohero/application/login/service/OAuthService.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.neighbors.tohero.domain.login.service.oauth.kakao.RequestKakaoInfo;
1616
import lombok.RequiredArgsConstructor;
1717
import lombok.extern.slf4j.Slf4j;
18+
import org.springframework.beans.factory.annotation.Value;
1819
import org.springframework.stereotype.Service;
1920

2021
@Slf4j
@@ -26,9 +27,24 @@ public class OAuthService {
2627
private final CreateUser createUser;
2728
private final JwtProvider jwtProvider;
2829

30+
@Value("${oauth.kakao.redirect-uri}")
31+
private String redirect_uri;
32+
33+
@Value("${oauth.kakao.redirect-client}")
34+
private String redirect_uri_client;
35+
36+
2937
public BaseResponse<OAuthLoginResponse> oAuthKaKaoLoin(String code){
30-
KakaoInfoResponse kakaoInfoResponse = requestUserInfo.requestKakaoInfo(code);
38+
KakaoInfoResponse kakaoInfoResponse = requestUserInfo.requestKakaoInfo(code, redirect_uri);
39+
return afterAuthorizedOauth(kakaoInfoResponse);
40+
}
41+
42+
public BaseResponse<OAuthLoginResponse> oAuthKaKaoLoinLocal(String code){
43+
KakaoInfoResponse kakaoInfoResponse = requestUserInfo.requestKakaoInfo(code, redirect_uri_client);
44+
return afterAuthorizedOauth(kakaoInfoResponse);
45+
}
3146

47+
private BaseResponse<OAuthLoginResponse> afterAuthorizedOauth(KakaoInfoResponse kakaoInfoResponse){
3248
User user = User.builder()
3349
.userName(kakaoInfoResponse.getNickname())
3450
.email(kakaoInfoResponse.getEmail())

src/main/java/com/neighbors/tohero/domain/login/service/oauth/kakao/RequestKakaoInfo.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,20 @@ public class RequestKakaoInfo {
2525
@Value("${oauth.kakao.client-key}")
2626
private String clientKey;
2727

28-
@Value("${oauth.kakao.redirect-uri}")
29-
private String redirect_uri;
30-
3128
private final RestTemplate restTemplate;
3229

33-
public KakaoInfoResponse requestKakaoInfo(String authorizationCode){
34-
String kakaoAccessToken = requestToken(authorizationCode);
30+
public KakaoInfoResponse requestKakaoInfo(String authorizationCode, String redirect_uri){
31+
String kakaoAccessToken = requestToken(authorizationCode, redirect_uri);
3532
return requestUserInfo(kakaoAccessToken);
3633
}
3734

38-
private String requestToken(String code) {
35+
private String requestToken(String code, String redirect_uri) {
3936
HttpHeaders httpHeaders = new HttpHeaders();
4037
httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
4138

42-
MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
43-
body.add("grant_type", "authorization_code");
44-
body.add("client_id", clientKey);
45-
body.add("redirect_uri", redirect_uri);
46-
body.add("code", code);
39+
MultiValueMap<String, String> body = createRequestBodyWithRedirectUrl(code, redirect_uri);
4740

4841
HttpEntity<?> request = new HttpEntity<>(body, httpHeaders);
49-
5042
KakaoTokens response = restTemplate.postForObject(tokenUrl, request, KakaoTokens.class);
5143

5244
assert response != null;
@@ -65,4 +57,14 @@ private KakaoInfoResponse requestUserInfo(String accessToken){
6557

6658
return restTemplate.postForObject(userInfoUrl, request, KakaoInfoResponse.class);
6759
}
60+
61+
private MultiValueMap<String, String> createRequestBodyWithRedirectUrl(String code, String redirect_uri){
62+
MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
63+
body.add("grant_type", "authorization_code");
64+
body.add("client_id", clientKey);
65+
body.add("redirect_uri", redirect_uri);
66+
body.add("code", code);
67+
68+
return body;
69+
}
6870
}

src/main/java/com/neighbors/tohero/presentation/controller/OAuthController.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,17 @@ public class OAuthController {
1414

1515
private final OAuthService oAuthService;
1616

17-
@Operation(summary = "카카오 로그인 API", description = "카카오톡으로 로그인하기 API입니다.")
17+
@Operation(summary = "카카오 로그인 API", description = "카카오톡으로 로그인하기 API입니다. redirect-uri = \"https://glittery-madeleine-215e2f.netlify.app/callback/kakaotalk\"")
1818
@GetMapping("/oauth/kakao/callback")
1919
public ResponseEntity<BaseResponse> kakaoLogin(@RequestParam("code") String code) {
2020
return ResponseEntity.ok()
2121
.body(oAuthService.oAuthKaKaoLoin(code));
2222
}
23+
24+
@Operation(summary = "카카오 로그인 API", description = "카카오톡으로 로그인하기 API입니다. redirect-uri = \"http://localhost:5173/callback/kakaotalk\"")
25+
@GetMapping("/oauth/kakao/callback2")
26+
public ResponseEntity<BaseResponse> kakaoLoginLocal(@RequestParam("code") String code) {
27+
return ResponseEntity.ok()
28+
.body(oAuthService.oAuthKaKaoLoinLocal(code));
29+
}
2330
}

src/main/resources/application.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,5 @@ oauth:
3636
token-url: https://kauth.kakao.com/oauth/token
3737
userInfo-url: https://kapi.kakao.com/v2/user/me
3838
client-key: ${KAKAO_CLIENT_KEY}
39-
redirect-uri: ${KAKAO_REDIRECT_URL}
39+
redirect-uri: ${KAKAO_REDIRECT_URL}
40+
redirect-client: ${KAKAO_REDIRECT_URL_TEST}

0 commit comments

Comments
 (0)