inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

Restaurant Pagination 요청해보기

[Restaurant Pagination 요청해보기] DioError [DioErrorType.response]: Http status error [401]가 나옵니다.

593

FlowerRoad T

작성한 질문수 4

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

flutter 하이브리드-앱

답변 5

0

코드팩토리

안녕하세요!

귀찮으실까봐 아래에 해결법을 남겨두겠습니다.

하지만 너무 쉬운 버그라 직접 찾아보셨으면 합니다.

힌트) 서버에서 오는 요청을 출력해보세요.

감사합니다!

 

아래로 쭉 스크롤 하시면 해결법 볼 수 있습니다. 근데 안보시는걸 추천드려요

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

서버 요청에서 오는 refresh token의 키값은 refreshToken입니다. refresh_token이 아닙니다.

access token또한 마찬가지입니다. camel case를 snake case로 작성하셨습니다.

0

FlowerRoad T

앗 이렇게 쉬운버그를 혼자서 몇시간동안 못고치다니 부끄럽네요...ㅠㅠ 감사합니다!!

0

FlowerRoad T

앗 제가 깃허브가 서툴러서 퍼블릭설정을 안했습니다... 공개전환했습니다! 잘부탁드립니다.

0

코드팩토리

image공유해주신 레포지토리를 접근할 수 없습니다. 다시 공유 부탁드립니다.

0

FlowerRoad T

다음수업 듣고싶어서 오매불망 기다리고있습니다 잘부탁드립니다 ㅠ.ㅠ

0

코드팩토리

안녕하세요!

혹시 이미 질문 답변 받으신분 맞나요?

감사합니다!

0

FlowerRoad T

아뇨, 이번이 처음입니다! 다른분하고 같은곳에서 막힌거같습니다. 감사합니다.

Isar 마지막 업데이트는 2년전입니다.

0

30

0

FlutterSecureStorage 질문

0

31

0

Dio onError Interceptor 만드는 부분에 질문이 있습니다.

0

80

2

관리자 기능에 대한 질문

0

100

2

part 'restaurant_model.g.dart';

0

92

1

36강. dio 인터셉터에 storage를 전달하는 코드가 이해 안되는데요. 도움 부탁드립니다.

0

56

2

2번 반환 상황 관련 질문

0

61

2

riverpod 3.0

0

140

2

Asset folder??

0

82

2

디자이너와 협업 시 프레임 크기 설정 관련 질문

0

114

2

FutureProvider, StateNotifierProvider 선택 기준

0

70

2

컴포넌트 모델화

0

64

2

쿼리 파라미터

0

84

2

화면 안보임

0

68

2

PaginationListView

0

54

1

강의중 37.Dio onErrorInterceptor 작업하기 dio 관련 질문입니다.

0

103

2

프로토타입이미지

0

62

2

여러 객체를 상태 관리하는 방법에 대한 질문

0

85

2

장바구니 결제하기 응답이 500이 옵니다.

0

105

2

removeFromBasket에서 await patchBasket()을 마지막에 하면 에러나는거 아닌가요?

0

67

2

이 두가지는 완전히 동일한 기능인가요?

0

106

3

내부 코드를 작성하지 않은 CursorPaginationLoading가 어떻게 로딩상태를 갖는지 잘 모르겠습니다...

0

77

2

_SplashScreenState에서 storage를 late로 호출해서 한번만 불러와도 되나요?

0

86

2

코딩 작성 순서 관련 질문

0

88

2