diff --git a/src/main/java/com/moongeul/backend/api/member/controller/MemberController.java b/src/main/java/com/moongeul/backend/api/member/controller/MemberController.java
index 827a738..186e95c 100644
--- a/src/main/java/com/moongeul/backend/api/member/controller/MemberController.java
+++ b/src/main/java/com/moongeul/backend/api/member/controller/MemberController.java
@@ -36,7 +36,8 @@ public class MemberController {
@Operation(
summary = "구글 로그인 API",
description = "구글 인가코드을 통해 사용자의 정보를 등록 및 토큰 + 역할을 발급합니다. " +
- "
[enum]ROLE -> 처음사용자 : GUEST, 일반사용자 : USER, 관리자 : ADMIN"
+ "
- type: 환경에 따라 local 또는 deploy를 보내주세요" +
+ "
- [enum]ROLE -> 처음사용자 : GUEST, 일반사용자 : USER, 관리자 : ADMIN"
)
@ApiResponses({
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "로그인 성공"),
@@ -47,13 +48,15 @@ public class MemberController {
@PostMapping("/google/login")
public ResponseEntity> loginWithGoogle(@Valid @RequestBody LoginRequestDTO loginRequestDTO) {
- LoginResponseDTO response = memberService.loginWithGoogle(loginRequestDTO.getCode());
+ LoginResponseDTO response = memberService.loginWithGoogle(loginRequestDTO.getCode(), loginRequestDTO.getType());
return ApiResponse.success(SuccessStatus.SEND_LOGIN_SUCCESS, response);
}
@Operation(
summary = "카카오 로그인 API",
- description = "카카오 인가코드을 통해 사용자의 정보를 등록 및 토큰 + 역할을 발급합니다. (ROLE -> 처음사용자 : GUEST, 일반사용자 : USER, 관리자 : ADMIN)"
+ description = "카카오 인가코드을 통해 사용자의 정보를 등록 및 토큰 + 역할을 발급합니다." +
+ "
- type: 환경에 따라 local 또는 deploy를 보내주세요" +
+ "
- [enum]ROLE -> 처음사용자 : GUEST, 일반사용자 : USER, 관리자 : ADMIN"
)
@ApiResponses({
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "로그인 성공"),
@@ -64,7 +67,7 @@ public ResponseEntity> loginWithGoogle(@Valid @Req
@PostMapping("/kakao/login")
public ResponseEntity> loginWithKakao(@Valid @RequestBody LoginRequestDTO loginRequestDTO) {
- LoginResponseDTO response = memberService.loginWithKakao(loginRequestDTO.getCode());
+ LoginResponseDTO response = memberService.loginWithKakao(loginRequestDTO.getCode(), loginRequestDTO.getType());
return ApiResponse.success(SuccessStatus.SEND_LOGIN_SUCCESS, response);
}
diff --git a/src/main/java/com/moongeul/backend/api/member/dto/LoginRequestDTO.java b/src/main/java/com/moongeul/backend/api/member/dto/LoginRequestDTO.java
index fee1a86..a59ce24 100644
--- a/src/main/java/com/moongeul/backend/api/member/dto/LoginRequestDTO.java
+++ b/src/main/java/com/moongeul/backend/api/member/dto/LoginRequestDTO.java
@@ -8,4 +8,5 @@ public class LoginRequestDTO {
@NotBlank(message = "인가코드가 입력되지 않았습니다.")
private String code; // 인가코드
+ private String type; // local, deploy
}
diff --git a/src/main/java/com/moongeul/backend/api/member/service/GoogleOAuthService.java b/src/main/java/com/moongeul/backend/api/member/service/GoogleOAuthService.java
index 5319b6a..c6475f3 100644
--- a/src/main/java/com/moongeul/backend/api/member/service/GoogleOAuthService.java
+++ b/src/main/java/com/moongeul/backend/api/member/service/GoogleOAuthService.java
@@ -32,11 +32,14 @@ public class GoogleOAuthService {
private String clientId;
@Value("${spring.security.oauth2.client.registration.google.client-secret}")
private String clientSecret;
- @Value("${spring.security.oauth2.client.registration.google.redirect-uri}")
- private String redirectUri;
+
+ @Value("${oauth-config.google.local}")
+ private String localRedirectUri;
+ @Value("${oauth-config.google.deploy}")
+ private String deployRedirectUri;
// Google 토큰 획득 로직 (WebClient 방식으로 수정 - 비동기 방식 구현)
- public AccessTokenResponseDTO getGoogleToken(String code) {
+ public AccessTokenResponseDTO getGoogleToken(String code, String type) {
String decodedCode;
try {
@@ -48,6 +51,8 @@ public AccessTokenResponseDTO getGoogleToken(String code) {
decodedCode = code;
}
+ String redirectUri = "deploy".equalsIgnoreCase(type) ? deployRedirectUri : localRedirectUri;
+
// ... (실제 Google OAuth 2.0 /token 엔드포인트 통신 로직 구현 필요)
// HTTP Body에 전송할 파라미터 담기
MultiValueMap params = new LinkedMultiValueMap<>();
diff --git a/src/main/java/com/moongeul/backend/api/member/service/KakaoOAuthService.java b/src/main/java/com/moongeul/backend/api/member/service/KakaoOAuthService.java
index 2b4d761..93a02c6 100644
--- a/src/main/java/com/moongeul/backend/api/member/service/KakaoOAuthService.java
+++ b/src/main/java/com/moongeul/backend/api/member/service/KakaoOAuthService.java
@@ -29,17 +29,23 @@ public class KakaoOAuthService {
private String clientId;
@Value("${spring.security.oauth2.client.registration.kakao.client-secret}")
private String clientSecret;
- @Value("${spring.security.oauth2.client.registration.kakao.redirect-uri}")
- private String redirectUri;
+
+ @Value("${oauth-config.google.local}")
+ private String localRedirectUri;
+ @Value("${oauth-config.google.deploy}")
+ private String deployRedirectUri;
// Kakao 토큰 획득 로직
- public AccessTokenResponseDTO getKakaoToken(String code){
+ public AccessTokenResponseDTO getKakaoToken(String code, String type){
// HTTP Body 생성
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("grant_type", "authorization_code");
params.add("client_id", clientId);
params.add("client_secret", clientSecret);
+
+ String redirectUri = "deploy".equalsIgnoreCase(type) ? deployRedirectUri : localRedirectUri;
+
params.add("redirect_uri", redirectUri);
params.add("code", code);
diff --git a/src/main/java/com/moongeul/backend/api/member/service/MemberService.java b/src/main/java/com/moongeul/backend/api/member/service/MemberService.java
index cc5b655..94d0e8a 100644
--- a/src/main/java/com/moongeul/backend/api/member/service/MemberService.java
+++ b/src/main/java/com/moongeul/backend/api/member/service/MemberService.java
@@ -55,10 +55,10 @@ public class MemberService {
// 인가코드 받아 JWT로 교환 및 회원가입/로그인 처리
@Transactional
- public LoginResponseDTO loginWithGoogle(String code){
+ public LoginResponseDTO loginWithGoogle(String code, String type){
// 1. 인가 코드로 Google Access Token 및 사용자 정보 획득
- AccessTokenResponseDTO tokenDTO = googleOAuthService.getGoogleToken(code);
+ AccessTokenResponseDTO tokenDTO = googleOAuthService.getGoogleToken(code, type);
GoogleInfoResponseDTO userInfo = googleOAuthService.getGoogleUserInfo(tokenDTO.getAccessToken());
// 2. 사용자 정보 추출
@@ -89,9 +89,9 @@ public LoginResponseDTO loginWithGoogle(String code){
}
@Transactional
- public LoginResponseDTO loginWithKakao(String code){
+ public LoginResponseDTO loginWithKakao(String code, String type){
- AccessTokenResponseDTO tokenDTO = kakaoOAuthService.getKakaoToken(code);
+ AccessTokenResponseDTO tokenDTO = kakaoOAuthService.getKakaoToken(code, type);
KakaoInfoResponseDTO userInfo = kakaoOAuthService.getKakaoUserInfo(tokenDTO.getAccessToken());
// 2. 사용자 정보 추출
@@ -138,9 +138,8 @@ private Member signUp(String socialId, String email, String name, String picture
.socialType(socialType)
.role(Role.GUEST) // 이후 필요 정보 모두 입력 시 USER 로 승격
.build();
- Member savedMember = memberRepository.save(newUser);
- return savedMember;
+ return memberRepository.save(newUser);
}
// 사용자 정보 조회