Flutter에서 카카오톡 로그인 오류

문의 시, 사용하시는 SDK 버전 정보와 디벨로퍼스 앱ID를 알려주세요.

Faq 목록 - 10. Android ( Faq 목록 입니다 ) 먼저 확인해주세요.


안녕하세요.
flutter에서 안드로이드 기기에서 카카오톡 로그인을 시도하였는데
await UserApi.instance.loginWithKakaoTalk();

아래와 같은 에러가 발생 하였습니다.
type ‘String’ is not a subtype of type ‘Map<String, dynamic>’

flutter로그에
Bundle[{key_url=…}] 에 인증 코드와 redirect URL도 잘 표시가 됩니다.
그런데 위 에러가 발생하면서 처리가 되지 않고 있습니다.

어느 부분이 문제인지 알려주시면 감사하겠습니다.

ios에서는 로그인이 잘 됩니다.

SDK : 34
ID: 1199819 입니다. 해당 앱 소유 계정에서 포럼에 로그인을 하면 알 수 없는 오류가 발생하여서 로그인을 할 수 없어서 다른 계정으로 문의 올립니다.

구현하신 관련 코드블럭 기재 부탁드려요.

if (await isKakaoTalkInstalled()) {
          try {
            print(await KakaoSdk.origin);

            await UserApi.instance.loginWithKakaoTalk();
            print('카카오톡으로 로그인 성공1');
          } catch (error) {
            print('카카오톡으로 로그인 실패1 $error');

            // 사용자가 카카오톡 설치 후 디바이스 권한 요청 화면에서 로그인을 취소한 경우,
            // 의도적인 로그인 취소로 보고 카카오계정으로 로그인 시도 없이 로그인 취소로 처리 (예: 뒤로 가기)
            if (error is PlatformException && error.code == 'CANCELED') {
              return {'result': 'error'};
            }
            // 카카오톡에 연결된 카카오계정이 없는 경우, 카카오계정으로 로그인
            try {
              print('카카오톡 앱이 설치되어 있었지만, 연결된 카카오계정이 없어, 웹에서 카카오계정으로 로그인 시도');
              await UserApi.instance.loginWithKakaoAccount();
              print('카카오계정으로 로그인 성공2');
            } catch (error) {
              print('카카오계정으로 로그인 실패2 $error');
            }
          }
        } else {
          try {
            print('카카오톡이 설치가 되어있지 않아, 카카오계정으로 로그인 시도');
            await UserApi.instance.loginWithKakaoAccount();
            print('카카오계정으로 로그인 성공3');
          } catch (error) {
            print('카카오계정으로 로그인 실패3 $error');
          }
        }

별다른 특이점은 없네요. 로그인 과정 로그도 전체 기재 부탁드려요.

D/ResultReceiver(15853): Status: Bundle[{key_url=://oauth?code=}]

D/com.llfbandit.app_links(15853): Intent { flg=0x14000000 cmp=com.aiblue.zrqst_webview_app/.MainActivity }

W/FDL (15853): FDL logging failed. Add a dependency for Firebase Analytics to your app to enable logging of Dynamic Link events.

D/ViewRootImpl@566bfa1MainActivity: stopped(false) old=false

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: MSG_WINDOW_FOCUS_CHANGED 0 1

D/InputMethodManager(15853): prepareNavigationBarInfo() DecorView@4e9dc2b[TalkAuthCodeActivity]

D/InputMethodManager(15853): getNavigationBarColor() -855310

D/ViewRootImpl@566bfa1MainActivity: stopped(false) old=false

D/ViewRootImpl@566bfa1MainActivity: MSG_WINDOW_FOCUS_CHANGED 1 1

D/InputMethodManager(15853): prepareNavigationBarInfo() DecorView@4c0d6ee[MainActivity]

D/InputMethodManager(15853): getNavigationBarColor() -855310

D/InputMethodManager(15853): prepareNavigationBarInfo() DecorView@4c0d6ee[MainActivity]

D/InputMethodManager(15853): getNavigationBarColor() -855310

V/InputMethodManager(15853): Starting input: tba=com.aiblue.zrqst_webview_app ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false

D/InputMethodManager(15853): startInputInner - Id : 0

I/InputMethodManager(15853): startInputInner - mService.startInputOrWindowGainedFocus

D/InputTransport(15853): Input channel constructed: fd=224

D/InputTransport(15853): Input channel destroyed: fd=217

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: stopped(true) old=false

W/libEGL (15853): EGLNativeWindowType 0x7959b3f010 disconnect failed

D/OpenGLRenderer(15853): eglDestroySurface = 0x7959bfb280, 0x7959b3f000

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: dispatchDetachedFromWindow

D/InputTransport(15853): Input channel destroyed: fd=216

W/System.err(15853): java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.view.View.getVisibility()’ on a null object reference

W/System.err(15853): at android.view.ViewRootImpl.getHostVisibility(ViewRootImpl.java:1806)

W/System.err(15853): at android.view.ViewRootImpl.handleAppVisibility(ViewRootImpl.java:1442)

W/System.err(15853): at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:4838)

W/System.err(15853): at android.os.Handler.dispatchMessage(Handler.java:106)

W/System.err(15853): at android.os.Looper.loop(Looper.java:214)

W/System.err(15853): at android.app.ActivityThread.main(ActivityThread.java:7078)

W/System.err(15853): at java.lang.reflect.Method.invoke(Native Method)

W/System.err(15853): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)

W/System.err(15853): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

I/flutter (15853): 카카오톡으로 로그인 실패1 type ‘String’ is not a subtype of type ‘Map<String, dynamic>’

I/flutter (15853): 카카오톡 앱이 설치되어 있었지만, 연결된 카카오계정이 없어, 웹에서 카카오계정으로 로그인 시도

W/ActivityThread(15853): handleWindowVisibility: no activity for token android.os.BinderProxy@a74a3b8

I/DecorView(15853): createDecorCaptionView >> DecorView@83959cd, isFloating: false, isApplication: true, hasWindowDecorCaption: false, hasWindowControllerCallback: true

D/CustomTabsCommonClient(15853): Choosing com.android.chrome as custom tabs browser

D/InputTransport(15853): Input channel constructed: fd=221

flutter에 표시되는 로그 전체는 너무 길어서 카카오 로그인 하는 부분만 올렸습니다.

아 위에 조금 잘려서 다시 올려드릴게요.

/flutter (15853): 카카오 로그인 버튼을 클릭하였습니다.

2

I/flutter (15853): mlJmFn3p8zlupgpMWV9meTTYeCE=

W/ActivityThread(15853): handleWindowVisibility: no activity for token android.os.BinderProxy@2d3d76e

I/DecorView(15853): createDecorCaptionView >> DecorView@4e9dc2b, isFloating: false, isApplication: true, hasWindowDecorCaption: false, hasWindowControllerCallback: true

D/InputTransport(15853): Input channel constructed: fd=216

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: setView = DecorView@4e9dc2b[TalkAuthCodeActivity] TM=true MM=false

D/ViewRootImpl@566bfa1MainActivity: MSG_WINDOW_FOCUS_CHANGED 0 1

D/InputMethodManager(15853): prepareNavigationBarInfo() DecorView@4c0d6ee[MainActivity]

D/InputMethodManager(15853): getNavigationBarColor() -855310

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x7 surface={true 521196007424} changed=true

D/mali_winsys(15853): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000

D/OpenGLRenderer(15853): eglCreateWindowSurface = 0x7959bfb280, 0x7959b3f010

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: MSG_RESIZED: frame=[0,0][1080,2220] ci=[0,72][0,144] vi=[0,72][0,144] or=1

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: MSG_WINDOW_FOCUS_CHANGED 0 1

D/InputMethodManager(15853): prepareNavigationBarInfo() DecorView@4e9dc2b[TalkAuthCodeActivity]

D/InputMethodManager(15853): getNavigationBarColor() -855310

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: MSG_WINDOW_FOCUS_CHANGED 0 0

D/InputTransport(15853): Input channel destroyed: fd=217

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: MSG_WINDOW_FOCUS_CHANGED 1 1

D/InputMethodManager(15853): prepareNavigationBarInfo() DecorView@4e9dc2b[TalkAuthCodeActivity]

D/InputMethodManager(15853): getNavigationBarColor() -855310

D/InputMethodManager(15853): prepareNavigationBarInfo() DecorView@4e9dc2b[TalkAuthCodeActivity]

D/InputMethodManager(15853): getNavigationBarColor() -855310

V/InputMethodManager(15853): Starting input: tba=com.aiblue.zrqst_webview_app ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false

D/InputMethodManager(15853): startInputInner - Id : 0

I/InputMethodManager(15853): startInputInner - mService.startInputOrWindowGainedFocus

D/InputTransport(15853): Input channel constructed: fd=217

D/ResultReceiver(15853): Status: Bundle[{key_url=://oauth?code=}]

D/com.llfbandit.app_links(15853): Intent { flg=0x14000000 cmp=com.aiblue.zrqst_webview_app/.MainActivity }

W/FDL (15853): FDL logging failed. Add a dependency for Firebase Analytics to your app to enable logging of Dynamic Link events.

D/ViewRootImpl@566bfa1MainActivity: stopped(false) old=false

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: MSG_WINDOW_FOCUS_CHANGED 0 1

D/InputMethodManager(15853): prepareNavigationBarInfo() DecorView@4e9dc2b[TalkAuthCodeActivity]

D/InputMethodManager(15853): getNavigationBarColor() -855310

D/ViewRootImpl@566bfa1MainActivity: stopped(false) old=false

D/ViewRootImpl@566bfa1MainActivity: MSG_WINDOW_FOCUS_CHANGED 1 1

D/InputMethodManager(15853): prepareNavigationBarInfo() DecorView@4c0d6ee[MainActivity]

D/InputMethodManager(15853): getNavigationBarColor() -855310

D/InputMethodManager(15853): prepareNavigationBarInfo() DecorView@4c0d6ee[MainActivity]

D/InputMethodManager(15853): getNavigationBarColor() -855310

V/InputMethodManager(15853): Starting input: tba=com.aiblue.zrqst_webview_app ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false

D/InputMethodManager(15853): startInputInner - Id : 0

I/InputMethodManager(15853): startInputInner - mService.startInputOrWindowGainedFocus

D/InputTransport(15853): Input channel constructed: fd=224

D/InputTransport(15853): Input channel destroyed: fd=217

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: stopped(true) old=false

W/libEGL (15853): EGLNativeWindowType 0x7959b3f010 disconnect failed

D/OpenGLRenderer(15853): eglDestroySurface = 0x7959bfb280, 0x7959b3f000

D/ViewRootImpl@787a0d2TalkAuthCodeActivity: dispatchDetachedFromWindow

D/InputTransport(15853): Input channel destroyed: fd=216

W/System.err(15853): java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.view.View.getVisibility()’ on a null object reference

W/System.err(15853): at android.view.ViewRootImpl.getHostVisibility(ViewRootImpl.java:1806)

W/System.err(15853): at android.view.ViewRootImpl.handleAppVisibility(ViewRootImpl.java:1442)

W/System.err(15853): at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:4838)

W/System.err(15853): at android.os.Handler.dispatchMessage(Handler.java:106)

W/System.err(15853): at android.os.Looper.loop(Looper.java:214)

W/System.err(15853): at android.app.ActivityThread.main(ActivityThread.java:7078)

W/System.err(15853): at java.lang.reflect.Method.invoke(Native Method)

W/System.err(15853): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)

W/System.err(15853): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

I/flutter (15853): 카카오톡으로 로그인 실패1 type ‘String’ is not a subtype of type ‘Map<String, dynamic>’

KOE009에러가 발생하네요.

키해시 확인해보시면 좋을 것 같습니다.

Android 키해시 문제 종합 안내 - 릴리즈키해시, 디버그키해시