네이버 소셜 로그인 Error while extracting response for type 오류
2024. 7. 26. 20:29ㆍTIL
❎ 문제발생
카카오에 이어 네이버 소셜 로그인 기능을 추가하여 시도하던 도중 오류 발생
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
)
정상적으로 올바른 값을 잘 넘겨주는것을 확인할 수 있다.
'TIL' 카테고리의 다른 글
간단한 Debugging 사용법 (0) | 2024.07.28 |
---|---|
기존 회원가입,로그인 서비스에 소셜로그인 합치기 (0) | 2024.07.27 |
소셜 로그인 오류 해결 (0) | 2024.07.25 |
소셜 로그인 Failed to fetch 오류 (1) | 2024.07.24 |
pagedModel fetchJoin 적용후 redis Cache 적용시 발생하는 오류 해결 (0) | 2024.07.23 |