inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)

로그인 api 요청 이후 getAccessToken ( /auth/refresh ) api 401 error

해결된 질문

636

병아리222

작성한 질문수 6

1

안녕하세여 강사님 강의 잘 듣고 있습니다.

다름이 아니라 회원가입 및 로그인 api 요청 성공시

onSuccess 함수 로직에 있는

queryClient.refetchQueries({
    queryKey: [queryKeys.AUTH, queryKeys.GET_ACCESS_TOKEN],
});

이 코드로

getAccessToken ( /auth/refresh ) api 를

요청하고 있습니다.

 

여기서 문제는 getAccessToken 요청시 401 error 가 발생하고 있습니다.

DB 에 회원가입으로 생성된 유저 데이터는 잘 생성된 상태이고 오타는 없어보입니다. ㅠㅠ 도와주세여

 

아래 이미지는 log 이미지입니다.

react-native typescript nestjs react-query zustand

답변 1

1

Kyo

안녕하세요. encryptStorage함수를 어떻게 작성하셨는지 모르겠지만, 강의와 똑같이 하셨다면 getEncryptStorage(key: 'refreshToken'); 이부분이 문제일수 있겠네요. 객체가아닌데 키-값으로 넣으셨는데,

강의에서는 getEncryptStorage('refreshToken'); 이렇게 사용합니다!

0

Kyo

앗 코드를 다시보니까 key는 직접넣으신게아닌 그냥 에디터가 표시해주는 부분같기도하네요. auth관련 hook은 어떻게 작성하셨나요??

0

병아리222

useAuth.ts -> useGetRefreshToken () 코드입니다.

function useGetRefreshToken() {
    const {isSuccess, data, isError} = useQuery({
        queryKey: [queryKeys.AUTH, queryKeys.GET_ACCESS_TOKEN],
        queryFn: getAccessToken,
        staleTime: numbers.ACCESS_TOKEN_REFRESH_TIME,
        refetchInterval: numbers.ACCESS_TOKEN_REFRESH_TIME,
        refetchOnReconnect: true,
        refetchIntervalInBackground: true,
    });

    useEffect(() => {
        if (isSuccess) {
            setHeader('Authorization', `Bearer ${data.accessToken}`);
            setEncryptStorage(storageKeys.REFRESH_TOKEN, data.refreshToken);
        }
    }, [isSuccess]);

    useEffect(() => {
        if (isError) {
            removeHeader('Authorization');
            removeEncryptStorage(storageKeys.REFRESH_TOKEN);
        }
    }, [isError]);

    return {isSuccess, isError};
}

 

 

1

Kyo

회원가입이 잘된다면 로그인이나 리프레시로직이 문제일텐데, 로그인쪽과 refreshtoken유틸함수에도 문제가없다면, 앱을 삭제하고 다시 빌드도해보세요

0

병아리222

function useLogin()

getAccessToken()

아래 이미지는 로그인 버튼 눌렀을 때 부터 나타나는 로그이며 getAccessToken 함수에서 콘솔에 refreshToken 값이 찍히는 부분을 빨간색 박스로 표시해둔 로그 이미지입니다.

0

병아리222

강사님 해결은 했습니다.
getAccessToken() 함수를 위 이미지 처럼 refreshToken 값을 디코딩 두번 돌려서 해결은 했는데...

1

Kyo

네 로그에찍히는 토큰을 보면 parse하거나 stringify할때 뭔가 문제가 있던것같네요.

1

병아리222

도와주셔서 감사합니다!

react-native-screens 버전 호환 문제

2

153

1

안드로이드 실행 중 Drawer네비게이션과 MapView 성능 문제

0

103

2

해당 강의 부분은 실제 활용하기에 부족해 제가 해결한 방법입니다.

0

96

1

소스코드가 강의 순서랑 다른가요?

0

72

2

현재 Windows에서 VsCode로 작업 중인데 추후에 IOS도 가능하게 하려면

0

115

2

react-native-fast-image는 react 19 버전에서 설치가 안되나요?

0

209

2

SQL Shell의 역할이 무엇인가요?

0

91

1

혹시 해당 강의에서invalidateQueries를 사용한 이유가 있을까요?

0

79

2

빠르게 실행해보고싶습니다.

0

83

1

강의 수강 순서 관련

0

70

1

애뮬레이터 실행 방법

0

99

2

무료 Apple ID로 실기기 테스트 가능한가요?

0

90

2

ios 실기기 연결

0

70

2

npm run ios에러

0

74

1

10월 삭제 예정인 강의는 이유를 알 수 있을까요?

0

101

1

캘린더 개발 후에 navigation 에 대해서 궁금한 점이 있습니다.

0

51

1

안드로이드 위치 권한 이슈 2가지 문의

0

71

1

지도가 보이려면 음.. 작성해주신 스타일과 다르게

0

74

0

제대로 설치한거같은데 안드로이드랑 ios 둘다 앱실행이 안되는것같아요

0

83

3

강의 내용을 보면 전체적으로 function 함수 키워드를 사용하시는데

0

69

2

강의 3-9 에서 useGetRefreshToken 훅 안에 즉시 함수로 처리하는 이유가 궁금합니다!

0

82

2

사내에서 figma.com 업로드 안되나요?

0

96

1

AWS EC2 + RDS 설정

0

85

2

안드로이드 안켜집니다.

0

91

2