트러블슈팅

next-auth 5.0.0-beta 버젼 Naver Provider 오류

노엠디엔 2024. 8. 1. 12:58

Next 팀 프로젝트 협업 중  Naver 소셜 로그인 구현 부분에서

next-auth의 NaverProvider에서 오류가 발생하였다.

[auth][cause]: OperationProcessingError:
"response" body "expires_in" property must be a positive number

NaverProvider 부분에서 response로 가져오는 expires_in의 타입에 문제가 있어 보였다.

 

해당 문제를 깃허브와 구글링을 통해 찾아보다가 제일 정리가 잘 되어있는 블로그를 발견함!

참고 블로그 :https://jacob.kim/blog/next-auth-expires-in/ko

해당 블로그를 보니 네이버 측에서 OAuth 2.0 스펙을 준수하지 않고, expires_in변수를 number 타입이 아닌,
string으로 반환하고 있다고 한다.

Auth.js는 내부적으로 oauth4 webapi이라는 라이브러리를 사용해서
OAuth 2.0 인증을 진행하는데  oauth4 webapi는 OAuth 2.0 스펙을 엄격히 지키기에
expires_in을 자동으로 number type으로 변환해 준다거나 하지 않는다고 한다. 

네이버 측에서 해결을 해야 하지만 사이드 이펙트 부분의 문제로 변경이 어려워 보인다고 함

 

그래서 해결방안으로 참고 블로그에서는 npm의 overrides를 활용해서
oauth4 webapi 패키지를 간단하게 덮어쓰는 방법으로 해결하였는데

현재 팀 프로젝트는 yarn 패키지를 사용하고 있어서 나는 resolutions 기능을 활용하였다.

yarn 패키지의 resolutions?

yarn의 resolutions 기능은 처음 사용해 보았는데 특정 패키지의
버전을 강제로 사용하도록 설정할 수 있게 해주는 기능이라고 한다.

oauth4 webapi의 버전을 강제로 낮게 설정하여서 문제를 해결하였다.