Skip to content

Commit

Permalink
refactor: change apple login logic
Browse files Browse the repository at this point in the history
  • Loading branch information
mushroom1324 committed Feb 5, 2024
1 parent ac189e1 commit 2bd05c0
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,11 @@ public SuccessResponse<TokenResponse> kakaoLogin(@Parameter(name = "accessToken"
- refreshToken: 서버 내부에서 발급한 토큰입니다.
""")
@PostMapping("/oauth/apple")
public SuccessResponse<TokenResponse> callback(@Parameter(name = "code", description = "애플 인증서버에서 받은 인증 코드", required = true)
@RequestParam String code) {
System.out.println("code = " + code);
public SuccessResponse<TokenResponse> callback(@Parameter(name = "id_token", description = "애플 인증서버에서 받은 id_token", required = true)
@RequestParam String id_token) {
System.out.println("id_token = " + id_token);

Pair<TokenResponse, Boolean> pair = appleUserService.appleLogin(code);
Pair<TokenResponse, Boolean> pair = appleUserService.appleLogin(id_token);

if (pair.getRight()) {
return SuccessResponse.createSuccess(pair.getLeft());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
import com.example.daycarat.global.error.exception.CustomException;
import com.example.daycarat.global.jwt.SecurityService;
import com.example.daycarat.global.jwt.TokenResponse;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.nimbusds.jwt.JWTClaimsSet;
import com.nimbusds.jwt.SignedJWT;
import io.jsonwebtoken.Jwts;
Expand All @@ -21,15 +19,8 @@
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import java.io.Reader;
import java.io.StringReader;
Expand Down Expand Up @@ -59,8 +50,8 @@ public class AppleUserService {



public Pair<TokenResponse, Boolean> appleLogin(String code) {
AppleUserDto appleUserInfo = getUserInfo(code);
public Pair<TokenResponse, Boolean> appleLogin(String id_token) {
AppleUserDto appleUserInfo = getUserInfo(id_token);

Pair<User, Boolean> appleUser = registerAppleUserIfNeed(appleUserInfo);

Expand All @@ -69,28 +60,8 @@ public Pair<TokenResponse, Boolean> appleLogin(String code) {
return Pair.of(securityService.usersAuthorizationInput(authentication), appleUser.getRight());
}

public AppleUserDto getUserInfo(String code) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
body.add("grant_type", "authorization_code");
body.add("client_id", clientId);
body.add("client_secret", createClientSecret());
body.add("code", code);
body.add("redirect_uri", redirectUri);

System.out.println("createClientSecret() = " + createClientSecret());

RestTemplate restTemplate = new RestTemplate();
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(body, headers);

public AppleUserDto getUserInfo(String idToken) {
try {
ResponseEntity<String> response = restTemplate.postForEntity("https://appleid.apple.com/auth/token", request, String.class);

JsonObject json = JsonParser.parseString(response.getBody()).getAsJsonObject();
String idToken = json.get("id_token").getAsString();

// id_token 디코딩
JWTClaimsSet claimsSet;
try {
Expand Down

0 comments on commit 2bd05c0

Please sign in to comment.