Flutter iOS 카카오톡 로그인 문제

안녕하세요 Flutter로 카카오 로그인 기능을 구현중입니다.
안드로이드에서는 정상적으로 값을 리턴 받아서 문제가 없는데
iOS에서는 오류가 나고 있습니다.

로그인 버튼을 누르고 동의를 하고나면 다시 앱 화면으로 돌아가는데
오류가 출력됩니다.

오류 코드는 아래와 같아요.

[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: PlatformException(EUNKNOWN, The operation couldn’t be completed. (com.apple.AuthenticationServices.WebAuthenticationSession error 3.), null, null)
#0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:607:7)
#1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:156:18)

#2 launchBrowserTab (package:kakao_flutter_sdk/src/common/util.dart:18:7)

#3 AuthCodeClient.requestWithAgt (package:kakao_flutter_sdk/src/auth/auth_code.dart:97:9)

#4 _MyHomePageState.retryAfterUserAgrees (package:genio_enduser/main.dart:94:9)

#4번은 String authCode = await kakao.AuthCodeClient.instance.requestWithAgt(requiredScopes);
이부분입니다.

그 이전에 var tmplog = await kakao.UserApi.instance.loginWithKakaoTalk(); 를 호출하고
tmplog를 찍어보면
{“access_token”:“G6OiYaspm_AQ-egqIr0ezcs6_N0sN_6VDas51dasAorDNMAAAF-10WviA”,“refresh_token”:"-4jwMSOESOwr8oY_k3noI6wVB81__EBImGEGSgas6d52xAF-10Wvhw",“scopes”:[“account_email”]}

이렇게 토큰까지는 잘 출력 됩니다.

info.plist에는 아래 문자열을 추가했구요
LSApplicationQueriesSchemes


kakao66546843ascqw215616967df999ff30
(키는 임의의 값으로 변경해서 넣었습니다.)

     <!-- KakaoTalk login -->
     <string>kakaokompassauth</string>
     <string>storykompassauth</string>

     <!-- KakaoLink -->
     <string>kakaolink</string>
     <string>kakaotalk-5.9.7</string>
 </array>

~

어떻게 해야 해결이될까요?
안드는 잘 되는데 iOS에서만 안되니 답답할 노릇이네요…

1개의 좋아요

안녕하세요

몇 가지 궁금한 점이 있어서 질문드려요

  1. 사용하고 계신 kakao_flutter_sdk 버전은 어떻게 되시나요?
  2. 앱 id가 어떻게 되시나요? (디벨로퍼스 사이트에서 확인할 수 있는 6자리 숫자입니다)
  3. 에러가 발생한 로그인 코드 첨부 가능할까요? (공개가 어렵다면 저에게 개인 메시지를 보내주셔도 좋아요)
  4. 모든 iOS 디바이스에서 에러가 발생하나요? 만약 특정 디바이스에서만 발생하고 있다면 모델 이름과 iOS 버전을 알려주세요
1개의 좋아요
  1. ^0.9.0 버전입니다.
  2. 680341 입니다
  3. 로그인 부분만 따로 잘라내서 첨부하겠습니다.
    main.zip (1.8 KB)
  4. iphone se, ios 14.8 에서만 확인 해봤습니다.
1개의 좋아요

첨부해주신 코드 확인했고 이슈 재현되는 것도 확인했습니다

확인해본 결과 카카오톡으로 로그인 후에 바로 추가 동의를 받기 위해 웹페이지를 띄우는 방식으로 구현되어있는 것으로 보이는데요, 카카오톡 로그인이 성공하고 다시 앱 화면으로 전환되는 과정에서 앱이 포그라운드로 돌아오기 전에 추가 동의 요청 코드가 실행되어서 에러가 발생한 것으로 보여요.

(비슷한 이슈 참고: https://github.com/openid/AppAuth-iOS/issues/498)

따라서 retryAfterUserAgrees 메서드를 호출하기 전에 Future.delay 등을 사용해 일정 시간 딜레이를 주고나서 retryAfterUserAgrees를 호출하면 정상적으로 동작할 것으로 보입니다.
(직접 테스트했을 때 정상적으로 동작하는 것 확인했습니다)

2개의 좋아요

해결에 도움을 주셔서 정말 감사합니다!
좋은 하루 되시길 바랄게요!

2개의 좋아요