작성
·
449
·
수정됨
0
void checkToken() async {
final refreshToken = await storage.read(key: REFRESH_TOKEN_KEY);
final accessToken = await storage.read(key: ACCESS_TOKEN_KEY);
final dio = Dio();
try {
final resp = await dio.post(
'http://$ip/auth/token',
options: Options(headers: {'authorization': 'Bearer $refreshToken'}),
);
await storage.write(
key: ACCESS_TOKEN_KEY, value: resp.data['accessToken']);
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (_) => RootTab()), (route) => false);
} catch (e) {
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (_) => LoginScreen()), (route) => false);
}
}
토큰값을 갱신하도록 수정하는 부분에서 토큰값을 갱신했는데 관련로직에서 문제가 있는거같습니다.
검색결과 저랑 같은문제 겪는분이 계신거같은데 챗지피티 열심히돌려도 해결책을 결국 못찾아서 질문남깁니다 ㅠㅠ
https://github.com/hottunes/hukuoka_eat.git
flutter: DioError [DioErrorType.response]: Http status error [401]
Source stack:
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:488:35)
#1 DioMixin.request (package:dio/src/dio_mixin.dart:483:12)
#2 DioMixin.get (package:dio/src/dio_mixin.dart:61:12)
#3 RestaurantScreen.paginateRestaurant (package:hukuoka_eat/restaurant/view/restaurant_screen.dart:14:28)
<asynchronous suspension>
#4 FutureBuilderState.subscribe.<anonymous closure> (package:flutter/src/widgets/async.dart:624:31)
<asynchronous suspension>
flutter: null
답변 5
0
안녕하세요!
귀찮으실까봐 아래에 해결법을 남겨두겠습니다.
하지만 너무 쉬운 버그라 직접 찾아보셨으면 합니다.
힌트) 서버에서 오는 요청을 출력해보세요.
감사합니다!
아래로 쭉 스크롤 하시면 해결법 볼 수 있습니다. 근데 안보시는걸 추천드려요
서버 요청에서 오는 refresh token의 키값은 refreshToken입니다. refresh_token이 아닙니다.
access token또한 마찬가지입니다. camel case를 snake case로 작성하셨습니다.
0
0
0
0
앗 이렇게 쉬운버그를 혼자서 몇시간동안 못고치다니 부끄럽네요...ㅠㅠ 감사합니다!!