작성
·
46
·
수정됨
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?
이렇게 납니다
조언해주시면 감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
정동인님, Flutter에서 딥링크를 통해 콜백을 받으려면 몇 가지 사항을 확인하는 것이 좋습니다.
<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>
GoRouter 설정: 설정한 redirect
함수 내에서 URI의 올바른 형식을 처리하는 부분이 필요합니다. 현재 에러 메시지에 따르면 ‘testapp’이라는 스키마를 처리하지 못하고 있는 것으로 보입니다. 올바른 스키마를 처리하거나 검증할 수 있도록 redirect
함수를 수정해보세요.
Flutter Local Authentication: 실제 페이지 전환이나 인증 흐름이 잘 작동하는지 확인하기 위해 Flutter의 Local Authentication 플러그인을 사용하여 추가적으로 콜백 기능을 확인하고 디버깅해 보시는 것도 방법입니다.
이러한 방법들을 통해 딥링크 콜백 문제를 해결할 수 있을 것으로 생각됩니다. 추가로 문의사항이 있거나 문제가 지속되면 공유해 주세요. 도움이 되길 바랍니다.