KOE006 에러 질문

안녕하세요 현재 플러터로 kakao_flutter_sdk: ^0.8.2을 사용하고 있습니다.
우선 안드로이드만 실행하기 위한 목적으로 kakao sdk 에 종속되는 5가지 플러터 라이브러리(dio,platform등) , 키해시 등록, android manifest등록도 다 해주었습니다.
그리고 지금 백앤드 서버와 사용하는 키를 통일하기 위해
android manifest와 페이지에서의 client.id 둘다 백앤드 서버에서 등록된 Restapi를 사용하고 있습니다.
로그인 버튼을 누르고 아이디,비밀번호 입력하고 나면 KOE006 에러로 빠지게 되는데 몇일째 보는건데 어디가 문제있는지 모르겠네요ㅠ
ID 663351입니다. 필요하시면 코드 첨부 가능할까요?

조금어찌어찌 바꿔서 PlatformException(REDIRECT_URL_MISMATCH, Expected: kakao{restapi값}://oauth, Actual: null, null, null) 라는 문구가 나오게 됬는데 이게 궁금한게
백엔드서버에서의 restapi를 받아서 client_id와 android manifest에 kakao{restapi} 넣어서 사용하고 있는데 발생한 에러입니다. developer에서 등록된 네이티브 앱 키를 두군데다 넣어주었는데도 동일한 에러가 나는데 해결방법이 있나요? Redirect Url도 잘 명시해주었다 생각되는데 왜이런지 궁금합니다.

안녕하세요

제가 현재 상황을 제대로 이해하지 못한 것 같은데, REST API 방식으로 로그인을 구현하고 싶으신건가요?

kakao_flutter_sdk는 Kakao Developers에서 발급받은 NATIVE_APP_KEY를 사용해서 로그인을 구현하기 때문에, REST API 방식으로 구현하실 생각이라면 kakao_flutter_sdk를 사용하실 필요는 없습니다

백엔드 서버와 사용하는 키를 통일했다는 것은 Kakao Developers에서 발급받은 앱 키를 말씀하시는걸까요?

백엔드와 클라이언트에서 어떤 방식으로 로그인을 구현하려고 생각하시는건지 조금 더 상세히 설명 부탁드리고, 가능하시다면 로그인 코드와 AndroidManifest.xml 파일 첨부 부탁드립니다.

AndroidManifest.xml 파일을 첨부할 때 앱 키가 노출되기 때문에 저에게 개인 메시지로 보내주시면 확인해보겠습니다.

안녕하세요 네 백엔드 서버와 사용하는 키를 통일했다는 것은 서버 측에서 Kakao Developers에서 발급받은 앱 Rest API키를 말하는 거고 다른 블로그나 예제들 봤었을 때 앱이랑 서버의 REST API키를 동일하게 해서 구현하는 것을 얼핏 본거 같아서요.

질문을 3가지 드려요

  1. 위에서 말했듯이 REST API를 통일하는게 아닌 단순히 AndroidManifest.xml 이랑 제 client_id 두 곳에 클라이언트 앱 쪽에서(서버쪽에서도 아닌) kakaoDeveloper에 등록된 네이티브 앱키를 넣는 걸까요?

  2. RestApi와 Native App Key사용의 차이를 알고 싶습니다.
    REST API 키 사용해서하는 방식으로 할 경우, 클라이언트 앱에서 인가코드를 요청하고 인가코드를 저희 벡엔드 서버로 보내어서 처리하는 방식인가요?
    네이티브 앱키를 사용해서 하는 방식으로 할 경우 클라이언트 앱에서 인가코드를 받고 토큰까지 발급받아서 저희 벡엔드 서버로 토큰을 보내는건가요?

사진과 같이 백엔드 서버에 인가코드를 전달하는거라 생각해서 카카오서버에 인가코드(authCode)를 받게되면 백엔드서버에 DIo로 보내고 AccessCode를 받는거라 생각했었거든요 (개인메시지로 보내드린 코드 참고 부탁드립니다)
저희가 첨부해드리는 사진과 같이 플로우로 이해하고 있는데 이 방식이 맞는지 또 궁금하네요:)
플러터 로그인 코드랑 AndroidManifest.xml도 같이 보내드립니다! (키해시 등록은 이미 되어있습니다)
KakaoTalk_Image_2021-11-15-12-34-06

  1. 로그인 코드 공식문서들 마다 다르던데 저 형식으로 해도되는지 궁금하네요. 0.9.0 최신으로 했을 때는 지금의 코드들이 에러가 나서요. 올바른 코드가 있다면 제공해주시면 감사하겠습니다.

코드들은 개인메시지로 보냈습니다!

  1. android.manifest.xml
  2. 플러터 로그인 코드
  3. Dio 코드
  4. 라이브러리

보내주신 코드 확인해서 답변드려요.

첨부하신 그림처럼 클라이언트에서 인가 코드를 발급받고, 백엔드에서 토큰을 요청하는 방식이라면 REST API 방식으로 직접 구현하셔야 합니다. 만약 REST API 방식으로 구현하시는거라면 말씀하신대로 클라이언트와 서버에서 REST_API_KEY를 사용해서 로그인을 구현하시는게 맞습니다.

구현하신 코드를 보았을 때 KOE006 에러가 발생하는 것은 결국 Redirect URL이 제대로 설정되어있지 않기 때문인데요, flutter 예제는 아니지만 REST-API 활용한 카카오 소셜 로그인 구현(feat. React) 해당 블로그 참고하시면 도움이 될 것 같습니다.

그리고 Native App Key를 사용하면 kakao_flutter_sdk의 로그인 기능을 통해 클라이언트에서 토큰을 발급받게 되는데요, 이 때는 발급받은 토큰을 백엔드로 전달하는 방식으로 구현하시면 될 것 같습니다.

kakao_flutter_sdk는 기본적으로 Native App Key를 사용해 클라이언트 단에서 토큰을 발급받아 사용할 수 있도록 해주는 SDK입니다 (SDK에서 자체적으로 토큰을 관리해줍니다). 따라서 Native App Key를 사용해서 구현하시기를 권장하지만, REST API 방식으로 자체 구현을 해야하는 상황이라면 첨부하신 그림처럼 구현하시면 됩니다.