inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Flutter Android에서 딥링크로 callback 받기

97

정동인

작성한 질문수 1

0

Oauth2 인증 java서버에서 인증이 성공한 후 Flutter Android에서 설정한 딥링크로 go_router로 callback을 받는 기능을 만들고 싶어서 노력중입니다. 근데 인터넷검색을 통해 딥링크 설정도 해보고 그랬지만 플러터에서 콜백을 받지를 못하는 것같은데 어떤 설정이 필요한지 잘 모르겠습니다.

 

현재 AndroidManifest.xml에

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="testapp"/>
</intent-filter>

설정도 되어있고

 

List<GoRoute> get routes => [
      // GoRoute(
      //   path: '/',
      //   name: RootTab.routeName,
      //   builder: (context, state) => RootTab(),
      // ),
      GoRoute(
        path: '/profile',
        name: ProfileScreen.routeName,
        builder: (context, state) => ProfileScreen(),
      ),
      GoRoute(
        path: '/login',
        name: LoginScreen.routeName,
        builder: (context, state) => LoginScreen(),

      ),
      GoRoute(
        path: '/callback',
        name: CallbackScreen.routeName,
        redirect: (context, state) async {
          final code = state.queryParameters["code"];
          if(code != null){
           
            return "/";
          } else {
            //code없으면 실패한걸로 간주하고 다시 login페이지로 redirect
            return "/login";
          }
        },
      ),
    ];

 

어떤 설정을 더 해야 콜백을 받을 수 있을 까요? callback을 받으면 나는 에러는

 

DioException [unknown]: null Error: Invalid argument(s): Unsupported scheme 'testapp' in URI testapp://callback?

이렇게 납니다

조언해주시면 감사합니다.

flutter deeplink oauth2

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

정동인님, Flutter에서 딥링크를 통해 콜백을 받으려면 몇 가지 사항을 확인하는 것이 좋습니다.

  1. Schemes 및 Host 설정: AndroidManifest.xml에서 설정한 <data android:scheme="testapp"/> 부분 외에도, <data android:host="callback"/>을 추가해보세요. 이렇게 하면 특정 경로로의 딥링크도 처리할 수 있습니다.
<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="testapp" android:host="callback"/>
</intent-filter>
  1. GoRouter 설정: 설정한 redirect 함수 내에서 URI의 올바른 형식을 처리하는 부분이 필요합니다. 현재 에러 메시지에 따르면 ‘testapp’이라는 스키마를 처리하지 못하고 있는 것으로 보입니다. 올바른 스키마를 처리하거나 검증할 수 있도록 redirect 함수를 수정해보세요.

  2. Flutter Local Authentication: 실제 페이지 전환이나 인증 흐름이 잘 작동하는지 확인하기 위해 Flutter의 Local Authentication 플러그인을 사용하여 추가적으로 콜백 기능을 확인하고 디버깅해 보시는 것도 방법입니다.

이러한 방법들을 통해 딥링크 콜백 문제를 해결할 수 있을 것으로 생각됩니다. 추가로 문의사항이 있거나 문제가 지속되면 공유해 주세요. 도움이 되길 바랍니다.

출처: Flutter Deep Linking guide

198강 BottomSheet 디자인 강좌 이해 돕기

0

2

1

인가 코드 발급(프론트 vs 백)

0

21

2

Node 관련 질문입니다

0

22

3

구글 소셜 로그인 후 로그인 시 구글에러

0

25

2

실습중(개인 비용 관리 앱) 문의드려요

0

42

2

6강에 비디오가 이상해요

0

21

1

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

0

29

0

Chat GPT API 설정하기 프롬프트

0

45

2

FlutterSecureStorage 질문

0

28

0

구글 플레이 등록 시, Privact Policy URL 등록 팁

0

40

1

질문있습니다!

0

17

0

2-8강 Websocket server running on port가 안 뜹니다.

0

41

2

video_call 플러그인 설치후 에러 발생

0

43

1

회차마다 있는 실습

1

38

2

계정 관련 문의

0

47

2

구글 플레이스토어 배포시 테스트 요건

1

68

2

수강 기한 연장 요청드려도될까요..

1

48

2

화면이 안 나옵니다. 소리만 나와요

0

55

2

추가 강의 문의

0

48

1

vs code IDE

0

77

2

구글 개발자 계정 생성 관련 질문

0

64

1

클로드코드가아닌, vs code codex

0

185

1

애드몹 계정 정지 관련 문의

0

80

2

파이어베이스 설치 오류

0

67

1