플러터로 카카오 로그인하고 다시 돌아오는 과정에서 ios는 앱이 재실행 되는 느낌입니다

문의 시 사용하시는 SDK 버전 정보와 플랫폼(Android / iOS) 및 디벨로퍼스 앱ID를 알려주세요.
카카오 SDK: 1.9.6
문제되는 디바이스: iOS
디벨로퍼스 앱ID: 940085
플러터 sdk 버전: 3.27.1
다트 버전: 3.6.0


안녕하세요. 카카오 sdk를 통해 카카오 로그인을 구현했습니다. 아래와 같이 카카오 로그인 후에 제 앱으로 돌아올때 goRouter명령이 없었음에도 goException에러가 납니다. 아마 ios가 다시 시작되는 걸로 보이는데, 설정도 잘 해놓은것 같은데 원인을 모르겠네요.

info.plist
스크린샷 2025-01-09 오후 2.36.09
스크린샷 2025-01-09 오후 2.36.17

AppDeletgate

안녕하세요

비슷한 문의가 몇 번 들어왔었는데요, 이슈 재현 자체가 안되고 있어서 다른 패키지의 영향인 것으로 추측하고 있습니다.

pubspec.yaml 파일에 선언된 다른 패키지들의 이름과 버전 정보, 카카오 로그인 구현부 코드를 첨부해주실 수 있을까요? 공개된 곳에 공개하기 어렵다면 저에게 개인 메시지로 보내주셔도 괜찮습니다.

추가로 ‘카카오톡 로그인’ 동선에서 이슈가 발생하는건지, ‘카카오계정으로 로그인’ 동선에서 이슈가 발생하는건지 궁금합니다.

문제되는 디바이스: iOS
디벨로퍼스 앱ID: 676452
플러터 sdk 버전: 3.27.1
다트 버전: 3.6.0


안녕하세요. 저도 위와 같은 현상이 있습니다.
잘 동작하다가 어제부터 갑자기 Page Not Found 페이지로 이동을 합니다.

'카카오계정으로 로그인’에서는 재현이 되질 않고, ‘카카오톡 로그인’ 에서만 발생하고 있습니다.
카카오 로그인이 정상적으로 완료된 이후에 발생하는 것으로 확인됩니다.
구현부 코드, pubspec.yaml, info.plist, app delegate 총 4가지 메세지로 전달드리겠습니다.

카카오톡 로그인에서 오류가 나고 카카오 계정으로 로그인은 잘 됩니다.

@더하기6529 @code1

안녕하세요.

현재 확인해본 내용으로는 go_router 혹은 auto_route 를 사용하는 경우에 제보주신 현상이 발생하는 것으로 파악됩니다.

정확한 원인은 조금 더 파악이 필요하겠지만 원인이 되는 패키지는 파악이 되어서 우선적으로 공유드리는 점 참고 부탁드려요.

제보주신 이슈에 대해서는 조금 더 확인해보도록 하겠습니다.

2개의 좋아요

네 감사합니다! :man_bowing:t2:

아 그럼 initialLocation이 저는 ‘/home’ 으로 되어있는데 (카카오든 go_router든)기본값이 ‘/’ 여서 그럴수도있는건가요?

방금 initialLocation을 '/'로 변경해봤는데 / 화면으로 이동하긴 합니다.

2일 전에 올린 테스트 플라잇에서는 정상 동작하는 걸 보니, 플러터 버전 혹은 go_router 관련된 오류로 의심이 됩니다… 버전을 아래처럼 올린 후부터 발생하는 것 같습니다.

fltuter 3.22.0 → 3.27.1
go_router 14.14 → 14.6.3

@tony.mb

카카오 로그인 완료 후, 카카오에서 보내주는 앱 키가 redirect에 잡혀서 발생하는 거였네요…
이게 왜 잡히는지는 확인이 필요한데, 일단 임시 방편으로 분기 처리 해두니까 정상 동작합니다.

redirect: (_, state) {
Log.d(“<====== GoRouter redirect: ${state.uri}”);

    if (state.uri.scheme.toString() == "${kakao_app_key}") {
      return RouteName.root;
    }

    // authNotifier.redirectRoute(state);
  },
1개의 좋아요

@code1

네네 말씀하신 것처럼 iOS에서는 ‘카카오톡으로 로그인’ 실행 시 카카오톡 앱으로 이동했다가, 다시 원래 앱으로 돌아올 때 kakao${app_key}://oauth 라는 Custom URL Scheme을 사용하고 있습니다. 그런데 이 때 go_router 에서 해당 스킴을 redirect 처리하기 때문에 이슈가 발생하고 있어요.

info.plist 파일에 FlutterDeepLinkingEnabled 값을 NO 로 추가하는 방법으로 정상동작하도록 처리할 수 있으나, 이렇게 설정했을 때 앱 내에서 사용하는 다른 딥링크가 정상동작하지 않을 수 있어서 다른 방법이 있을지 확인 중에 있는 점 참고 부탁드려요

1개의 좋아요

네 답변 감사합니다!

@더하기6529 @code1
이전 댓글에서 설명드린 것과 같이 go_router에서 Custom URL Scheme이 동작하는 경우에도 redirect 로 감지해서 라우팅처리하고 있어서 발생하는 이슈이고, kakao_flutter_sdk 의 수정으로는 해결할 수 없는 이슈인 것으로 파악됩니다.

info.plist 파일에 FlutterDeepLinkingEnabled 값을 NO로 처리하는 경우 go_router에서 모든 Custom URL Scheme 호출에 대해서 redirect 처리하지 않도록 하기 때문에, 개발 중인 앱에서 Custom URL Scheme을 사용하고 있다면 적용하기 어렵다고 판단해서 아래와 같이 코드 수정을 통해 처리하도록 가이드 전달해드리는 점 참고 부탁드립니다.

GoRouter 객체 생성 시 redirect 부분을 아래와 같이 수정했을 때 정상적으로 동작하는지 확인 부탁드리고, 문제가 없다면 코드 수정해서 사용 부탁드리겠습니다.

final GoRouter router = GoRouter(
  routes: <RouteBase>[
    // 생략
  ],
  redirect: (BuildContext context, GoRouterState state) {
    // 생략
    
    final uri = state.uri;

    // kakao${app_key}://kakaolink과 같은  Custom URL Scheme도 있으므로 uri.authority까지 체크 필요
    if (uri.scheme.contains('kakao') && uri.authority == 'oauth') {
      return '${카카오톡 로그인을 실행한 페이지}';
    }

    // 생략
  },
);
1개의 좋아요

넵 감사합니다. 정상적으로 작동합니다.

1개의 좋아요