안녕하세요 카카오톡 로그인 관련 질문 드립니다.
기존에 카카오톡 로그인을 계속 사용해왔는데 언제부터인가 카카오톡 로그인(카카오톡 설치 상태)인 경우 카카오톡으로 넘어갔다가 돌아오면서 앱이 다시 실행이 됩니다. 해당 부분 코드를 변경하지 않았는데 갑자기 이런 상황이 생기네요, 혹시 이유를 알 수 있을까요?
Kakao user sdk 1.9.6 버전을 사용하다가 안되길래 1.9.7+3으로 올려보았는데도 마찬가지 문제가 있습니다.
await kakao.UserApi.instance.loginWithKakaoTalk();
해당 코드가 실행되면 그런 이슈가 있고,
await kakao.UserApi.instance.loginWithKakaoAccount();
이 코드는 정상적인 동작을 합니다.
요약하자면 await kakao.UserApi.instance.loginWithKakaoTalk();
실행 → 카카오톡 → 앱 리다이렉트 (앱 처음부터 다시시작) 입니다.
감사합니다
안녕하세요.
확인을 위해 앱 ID 부탁드립니다.
앱ID
https://developers.kakao.com/ 의 내 애플리케이션에 표시되는 ID 값 입니다.
숫자로된 ID 입니다
ex) 123456
[@tim.l @woody.ho]
앱 ID는 1038348 입니다.
추가로, 테스트용도 하나 만들어서 사용중이었는데 해당 ID는 1149011입니다.
현재 둘 다 안됩니다,
안녕하세요.
앱이 새로 시작되는 경우는 앱이 강제 종료되었거나, 혹은 launchMode 설정에 따라 영향을 받습니다.
강제종료된것이 아니라면 launchMode를 확인 부탁드립니다.
launchMode를 AndroidManifest.xml
에서 확인해보았을 때에 android:launchMode="singleTop"
으로 설정되어있습니다.
혹시 singleTask로 변경해야되나요?
그리고 launchMode 변경이 iOS에서도 동작을 하나요?
제가 혹시 추가로 남겨드려야하는 정보가 있다면 말씀해주세요!
iOS에서 앱이 다시 실행된다는 말씀이신가요?
네 맞습니다 안드로이드에서는 아직 테스트해보지 못했는데, 우선적으로 확인된건 iOS에서 카카오톡으로 갔다가 돌아오면서 앱이 다시 실행됩니다.
안드로이드도 추가로 확인해보겠습니다!
간단히 테스트하려고, 홈 화면 임의의 버튼에 await kakao.UserApi.instance.loginWithKakaoTalk();
이벤트를 주었을 때에
카카오톡 → 스플래시 → 홈 이렇게 돌아오네요,
톡에서 앱으로 돌아올 때, AppDelegate 나 SceneDelegate에서 스플래시 처리하는 것으로 보입니다.
카카오톡측 url인 경우 스플래시 화면 처리되지 않도록 구성해보셔야 할것 같습니다.
혹시 플러터 버전과도 문제가 될까요?
기존
Flutter: 3.24.3
Dart: 3.5.3
현재
Flutter: 3.29.0
Dart: 3.7.0
딱 버전 올리기전까지의 빌드는 정상적으로 작동하는데, 버전 올린 이후는 해당 이슈가 발생합니다. 가능성이 있는일일까요?
무관할 것으로 보이는데요
디버깅 모드로 앱으로 돌아올 때 항상 스프래시 화면으로 진입하는지 확인 부탁드립니다.
카카오톡 로그인 → 앱으로 리다이렉트 될 때에는 무조건 스플래시 화면부터 시작을 하구요, 백 그라운드로 돌렸다가 다시 앱을 켰을 때는 정상적으로 기존 페이지가 보입니다
카카오 로그인은 로그인 이후 회원님 앱으로 돌아갈 수 있도록 스킴을 호출하지만 이후 스플래시 화면 표시와 같은 흐름은 제어하지 않습니다.
카카오 로그인 호출 후, 앱이 종료되지는 않는지, 톡에서 앱으로 돌아올 때 다른 이벤트 채널이 동작하지 않는지 확인 부탁드립니다.
안녕하세요
이전에 go_router 혹은 auto_route 패키지를 사용하는 경우 iOS 환경에서 말씀하신 것과 동일한 현상이 발생하는 이슈 제보가 있었습니다.
go_router를 사용하고 계시다면 관련 답변 확인 부탁드리고, auto_route를 사용 중이시라면 아래와 같은 형태로 구현했을 때 이슈 재현되는지 확인 부탁드립니다.
Route 등록 부분
// Route 등록 부분 (이외 코드 생략)
[
// 다른 Route 생략
AutoRoute(
path: '${로그인 페이지용 path}',
page: ${로그인 페이지 page},
// 이외 설정 생략
)
]
routerConfig 코드
// 이외 코드 생략
return MaterialApp.router(
routerConfig: appRouter.config(deepLinkTransformer: (uri) async {
// kakao${app_key}://kakaolink과 같은 Custom URL Scheme도 있으므로 uri.authority까지 체크 필요
if (uri.scheme.contains('kakao') && uri.authority == 'oauth') {
return Uri(path: '${로그인 페이지용 path}');
}
return uri;
}),
// 생략
);
답변 감사합니다!
get 패키지를 사용 중인앱이라서, 앱 두 라우터 패키지 모두 사용중이지 않습니다 ㅠㅠ
GOING TO ROUTE /?code=ZnBTFwpAUmvTNpDdtK8I8F6RrDbUfJZYcDsXE9CNYvMU231x7…
이런 로그가 찍힌 뒤에 스플래시로 이동하게 됩니다. main함수에 로그를 찍었던 건 한번만 실행 되는 것을 보아 앱 자체가 재실행되는 건 아닌거 같아요.
get 패키지에서도 라우팅을 지원하고 있기 때문에 get 패키지의 영향일 수 있어보여요.
get 패키지에서 라우팅 관련 코드들 첨부해주시면 이슈 파악에 도움이 될 것 같습니다.