카카오내비 인증에 실패하였습니다

문의 시 사용하시는 SDK 버전 정보와 플랫폼(Android / iOS) 및 디벨로퍼스 앱ID를 알려주세요.


  1. 디벨로퍼스 앱 id => ID 968131

  2. SDK의 어떤 기능 => webview에서 넘어온 값을 JS channel을 통해 해당 lon, lat으로 네이게이션 기능을 사용하려합니다.

void _setNavi(String message) async{
      // js channel을 타고 넘어온 변수
      List<String> parts = message.split('|');
      String lon = parts[0];
      String lat = parts[1];

      bool result = await NaviApi.instance.isKakaoNaviInstalled();
      String keyValue = await KakaoSdk.origin;
      print('keyValue = $keyValue');
      if (result) {
        // 카카오내비 앱으로 길 안내하기, WGS84 좌표계 사용
        await NaviApi.instance.navigate(
          destination:
          Location(name: '카카오 판교오피스', x: '127.108640', y: '37.402111'),
          // 좌표계 지정
          option: NaviOption(coordType: CoordType.wgs84),
        );
      } else {
        print('카카오내비 미설치');
        // 카카오내비 설치 페이지로 이동
        launchBrowserTab(Uri.parse(NaviApi.webNaviInstall));
      }
    }
  1. Android / iOS / Web 어떤 플랫폼에서 에러가 발생하는건지 => Flutter로 동작하는 android(WebView)에서 위 메서드를 동작하였을 때 “카카오내비 인증에 실패하였습니다.” 가 뜹니다.

  2. 추가적으로 플랫폼 등록은 안 되어있는데 SDK를 사용하여 navi 기능을 사용하려면 플랫폼 등록이 되어있어야한다고 봤습니다. 이때 반드시 마켓 플레이스에 배포가된 상태여야하는지 궁금합니다.

flutter로 처음 하는 프로젝트라 질문 수준을 이해해주시면 감사하겠습니다.

안녕하세요

안드로이드 플랫폼에서 SDK를 사용하려면 키 해시를 등록해야합니다.

가이드 참고하셔서 키 해시 등록하시면 정상적으로 동작할 것으로 보여요

답변 감사합니다. 그런데 말씀하신 링크에서

keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64

위와같이 작성한 디버그 키와 alias만 바꿔 릴리즈키를 따로 생성하여 키를 적어둔 다음 해당 키 2개를
마이프로젝트 => 플랫폼 => 안드로이드 의 키 해시에 따로 적어두었습니다. 하지만 똑같은 현상입니다.

  1. 현재 제 카카오 디벨로퍼에는 "패키지명"과 "키해시"가 적혀있고 “마켓 URL” 은 적혀있지 않습니다.
  2. flutter main.dart 에서 runApp 메서드 전에 ensuerInitialized() 와 KakaoSdk.init에 JS, Navtive 2개의 key를 입력한 상태입니다.
  3. flutter 프로젝트 파일에 android\app\build.gradle에 defaultconfig {minSdkVersion 21} 을 설정하였습니다.
  4. WebView에서 flutter SDK를 사용할 일이 없지만 혹시 몰라 index.html에도 flutter SDK 태그를 추가하였습니다.

혹시나 위 설정 말고도 빼먹은 것이 있다면 알려주면 감사하겠습니다.

추가적으로

  • 릴리즈 키 해시: 앱 스토어에 앱을 배포하기 위해 생성한 릴리즈 인증서로부터 해시한 값이라고 명시되어있는데
    앞서 질문 드린 것 처럼 반드시 마켓에 배포가 되어야만 하는지도 궁금하여 질문드립니다.

해결하였습니다.

저와 같은 오류를 겪고 계신 분이 계셨습니다.

결과적으로 flutter 코드내에서 await KakaoSdk.origin 메서드로 나온 결과값을 다시 등록하였습니다.

그런데 궁금한 것이

openssl로 생성한 릴리즈키, 디버그키와 실제 flutter 코드에서 동작하여 돌아가는 키가 상이한데 그 이유가 있습니까?

답변을 남기던 중이었는데 다행이 해결되었군요ㅎㅎ

윈도우 환경에서 openssl 버전에 따라서 키 해시 값이 다르게 생성되는 경우가 있는 것으로 파악하고 있어요. (openssl 버전 별 인코딩 방식의 차이가 있는 것으로 추측됩니다)

실제로 kakao_flutter_sdk 소스코드를 확인해보시면 서버에는 KakaoSdk.origin 값으로 키 해시 값을 전달하고 있기 때문에 await KakaoSdk.origin 으로 구하신 값을 등록해서 사용하시면 문제 없습니다. (실제 스토어에 업로드되었을 때의 릴리즈 키는 다시 구해서 등록해주셔야합니다)

1개의 좋아요