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의 버전을 강제로 낮게 설정하여서 문제를 해결하였다.
'트러블슈팅' 카테고리의 다른 글
setState 로 인한 useEffect에서 일어나는 무한렌더링 (1) | 2023.12.01 |
---|---|
MongoDB Error: querySrv ENODATA (0) | 2023.09.14 |
jest 사용 도중 오류 (0) | 2023.08.25 |
next 13버젼 link 태그로 데이터 전달하기(props) (0) | 2023.08.01 |
formdata 서버에서 multer사용해서 받기 (0) | 2023.07.26 |