Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .deploy/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ ARG JWT_EXPIRED_IN
ARG REFRESH_TOKEN_EXPIRED_IN
ARG KAKAO_CLIENT_KEY
ARG KAKAO_REDIRECT_URL
ARG KAKAO_REDIRECT_URL_TEST

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

# JAR 파일 복사
ARG JAR_FILE=build/libs/*.jar
Expand Down
1 change: 1 addition & 0 deletions .deploy/neighbors-blue-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ services:
- REFRESH_TOKEN_EXPIRED_IN=${REFRESH_TOKEN_EXPIRED_IN}
- KAKAO_CLIENT_KEY=${KAKAO_CLIENT_KEY}
- KAKAO_REDIRECT_URL=${KAKAO_REDIRECT_URL}
- KAKAO_REDIRECT_URL_TEST=${KAKAO_REDIRECT_URL_TEST}

networks:
app-network:
Expand Down
1 change: 1 addition & 0 deletions .deploy/neighbors-green-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ services:
- REFRESH_TOKEN_EXPIRED_IN=${REFRESH_TOKEN_EXPIRED_IN}
- KAKAO_CLIENT_KEY=${KAKAO_CLIENT_KEY}
- KAKAO_REDIRECT_URL=${KAKAO_REDIRECT_URL}
- KAKAO_REDIRECT_URL_TEST=${KAKAO_REDIRECT_URL_TEST}

networks:
app-network:
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/CD.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ jobs:
REFRESH_TOKEN_EXPIRED_IN: ${{ secrets.REFRESH_TOKEN_EXPIRED_IN }}
KAKAO_CLIENT_KEY: ${{ secrets.KAKAO_CLIENT_KEY }}
KAKAO_REDIRECT_URL: ${{ secrets.KAKAO_REDIRECT_URL }}
KAKAO_REDIRECT_URL_TEST: ${{ secrets.KAKAO_REDIRECT_URL_TEST }}

steps:

Expand Down Expand Up @@ -67,6 +68,7 @@ jobs:
--build-arg REFRESH_TOKEN_EXPIRED_IN=${{ secrets.REFRESH_TOKEN_EXPIRED_IN }} \
--build-arg KAKAO_CLIENT_KEY=${{ secrets.KAKAO_CLIENT_KEY }} \
--build-arg KAKAO_REDIRECT_URL=${{ secrets.KAKAO_REDIRECT_URL }} \
--build-arg KAKAO_REDIRECT_URL_TEST=${{ secrets.KAKAO_REDIRECT_URL_TEST }} \
--platform linux/amd64 \
-f ./.deploy/Dockerfile \
-t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }} .
Expand Down Expand Up @@ -107,6 +109,7 @@ jobs:
echo "REFRESH_TOKEN_EXPIRED_IN=${{ secrets.REFRESH_TOKEN_EXPIRED_IN }}" >> ./.env
echo "KAKAO_CLIENT_KEY=${{ secrets.KAKAO_CLIENT_KEY }}" >> ./.env
echo "KAKAO_REDIRECT_URL=${{ secrets.KAKAO_REDIRECT_URL }}" >> ./.env
echo "KAKAO_REDIRECT_URL_TEST=${{ secrets.KAKAO_REDIRECT_URL_TEST }}" >> ./.env
chmod +x deploy.sh
source deploy.sh

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.neighbors.tohero.domain.login.service.oauth.kakao.RequestKakaoInfo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Slf4j
Expand All @@ -26,9 +27,24 @@ public class OAuthService {
private final CreateUser createUser;
private final JwtProvider jwtProvider;

@Value("${oauth.kakao.redirect-uri}")
private String redirect_uri;

@Value("${oauth.kakao.redirect-client}")
private String redirect_uri_client;


public BaseResponse<OAuthLoginResponse> oAuthKaKaoLoin(String code){
KakaoInfoResponse kakaoInfoResponse = requestUserInfo.requestKakaoInfo(code);
KakaoInfoResponse kakaoInfoResponse = requestUserInfo.requestKakaoInfo(code, redirect_uri);
return afterAuthorizedOauth(kakaoInfoResponse);
}

public BaseResponse<OAuthLoginResponse> oAuthKaKaoLoinLocal(String code){
KakaoInfoResponse kakaoInfoResponse = requestUserInfo.requestKakaoInfo(code, redirect_uri_client);
return afterAuthorizedOauth(kakaoInfoResponse);
}

private BaseResponse<OAuthLoginResponse> afterAuthorizedOauth(KakaoInfoResponse kakaoInfoResponse){
User user = User.builder()
.userName(kakaoInfoResponse.getNickname())
.email(kakaoInfoResponse.getEmail())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,28 +25,20 @@ public class RequestKakaoInfo {
@Value("${oauth.kakao.client-key}")
private String clientKey;

@Value("${oauth.kakao.redirect-uri}")
private String redirect_uri;

private final RestTemplate restTemplate;

public KakaoInfoResponse requestKakaoInfo(String authorizationCode){
String kakaoAccessToken = requestToken(authorizationCode);
public KakaoInfoResponse requestKakaoInfo(String authorizationCode, String redirect_uri){
String kakaoAccessToken = requestToken(authorizationCode, redirect_uri);
return requestUserInfo(kakaoAccessToken);
}

private String requestToken(String code) {
private String requestToken(String code, String redirect_uri) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
body.add("grant_type", "authorization_code");
body.add("client_id", clientKey);
body.add("redirect_uri", redirect_uri);
body.add("code", code);
MultiValueMap<String, String> body = createRequestBodyWithRedirectUrl(code, redirect_uri);

HttpEntity<?> request = new HttpEntity<>(body, httpHeaders);

KakaoTokens response = restTemplate.postForObject(tokenUrl, request, KakaoTokens.class);

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

return restTemplate.postForObject(userInfoUrl, request, KakaoInfoResponse.class);
}

private MultiValueMap<String, String> createRequestBodyWithRedirectUrl(String code, String redirect_uri){
MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
body.add("grant_type", "authorization_code");
body.add("client_id", clientKey);
body.add("redirect_uri", redirect_uri);
body.add("code", code);

return body;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,17 @@ public class OAuthController {

private final OAuthService oAuthService;

@Operation(summary = "카카오 로그인 API", description = "카카오톡으로 로그인하기 API입니다.")
@Operation(summary = "카카오 로그인 API", description = "카카오톡으로 로그인하기 API입니다. redirect-uri = \"https://glittery-madeleine-215e2f.netlify.app/callback/kakaotalk\"")
@GetMapping("/oauth/kakao/callback")
public ResponseEntity<BaseResponse> kakaoLogin(@RequestParam("code") String code) {
return ResponseEntity.ok()
.body(oAuthService.oAuthKaKaoLoin(code));
}

@Operation(summary = "카카오 로그인 API", description = "카카오톡으로 로그인하기 API입니다. redirect-uri = \"http://localhost:5173/callback/kakaotalk\"")
@GetMapping("/oauth/kakao/callback2")
public ResponseEntity<BaseResponse> kakaoLoginLocal(@RequestParam("code") String code) {
return ResponseEntity.ok()
.body(oAuthService.oAuthKaKaoLoinLocal(code));
}
}
3 changes: 2 additions & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,5 @@ oauth:
token-url: https://kauth.kakao.com/oauth/token
userInfo-url: https://kapi.kakao.com/v2/user/me
client-key: ${KAKAO_CLIENT_KEY}
redirect-uri: ${KAKAO_REDIRECT_URL}
redirect-uri: ${KAKAO_REDIRECT_URL}
redirect-client: ${KAKAO_REDIRECT_URL_TEST}
Loading