네이버 소셜 로그인 Error while extracting response for type 오류

2024. 7. 26. 20:29TIL

 문제발생

 

카카오에 이어 네이버 소셜 로그인 기능을 추가하여 시도하던 도중 오류 발생

 

json타입 에러가 발생하였다.

 

 

🆘 해결 과정

 

현재 네이버 소셜로그인을 통해 가져온 정보를 팀프로젝트의 dto로 가져오는 상황에서 문제가 발생한 것으로 보여 디버깅을 실시하였다.

 

 

.let { naverOAuth2LoginClient.retrieveUserInfo(it) }

부분까지는 실행이 잘 되지만

.let {
    OAuthResponse(
        nickname = it.properties.nickname,
        providerId = it.id.toString(),
        profileImageUrl = it.properties.profileImageUrl,
        provider = "NAVER"
    )
}

이쪽 부분까지 가기도 전에 오류가 터져버리고 만다.

해당 부분을 면밀히 디버깅 해보았다.

fun retrieveUserInfo(accessToken: String): NaverOAuthLoginUserInfoResponse {
    return restClient.get()
        .uri("$resourceServerBaseUrl/v1/nid/me")
        .header("Authorization", "Bearer $accessToken")
        .retrieve()
        .onStatus(HttpStatusCode::isError) { _, _ ->
            throw RuntimeException("네이버 UserInfo 조회 실패")
        }
        .body<NaverOAuthLoginUserInfoResponse>()
        ?: throw RuntimeException("네이버 UserInfo 조회 실패")
}

 

해당 부분을 하나하나 디버그 해서 값을 확인해보았다.

해당 오류는 email이 nullable하지 않은데 지금 null이 되었기때문에 오류가 발생한 것이라고 한다.

 

 해결

 

현재 프로젝트에서는 nickname과 profile_url만 필수로 제공받기 때문에 email,name같은 변수들은 nullable하게 수정하였다.

package sparta.nbcamp.wachu.infra.security.oauth.dto

import com.fasterxml.jackson.annotation.JsonProperty

data class NaverOAuthUserResponseResponse(
    val id: String,
    val nickname: String,
    val email: String?,
    val name: String?,
    @JsonProperty("profile_image")
    val profileImageUrl: String
)

 

 

정상적으로 올바른 값을 잘 넘겨주는것을 확인할 수 있다.