flutter_kakao_login 패키지(https://pub.dev/packages/flutter_kakao_login)를 이용해서 카카오로 로그인을 구현할 때 안드로이드 디버그 모드에서는 잘 동작하지만, 릴리즈 바이너리에서
Fatal Exception: f.e.a.a.c.j: Refresh token not found in the response.
exception 떨어지는 문제가 생겨서 한참 고생하다 해결했다.
일단 iOS에서는 문제 없고, 안드로이드에서만 문제가 발생한다면 키 해시 문제라고 보면 될 것 같다.
기본적으로 제일 먼저 확인해야 하는 것은
카카오 개발자 사이트에서 앱 설정 - 플랫폼 - 안드로이드 에 키해시 값이 잘 들어가있는지
이다.
혹시 디버그모드에서만 되고 릴리즈모드에서 안 된다면 ~/.android/debug.keystore 로 만든 hash 와 Google Play Console 에서 얻은 SHA1 certificate fingerprint 로 만든 hash 값이 모두 들어가 있는 지 확인해본다.
둘 다 제대로 들어가 있다고 확신하는데 계속 문제가 발생한다면 다음은 proguard 설정을 확인해본다.
kakao 개발자 문서와 패키지 문서에 proguard 설정을 넣어주라는 말이 있기는 한데(https://developers.kakao.com/docs/latest/en/getting-started/sdk-android#configure-for-shrinking-and-obfuscation-(optional)), 빠뜨리기 쉽다.
# kakao login
-keep class com.kakao.sdk.**.model.* { <fields>; }
-keep class * extends com.google.gson.TypeAdapter
이 설정을 별도의 파일에 넣어줬다면 (ex. android/app/proguard-kakao.pro) 당연히 android/app/build.gradle 에 해당 파일을 넣어줘야 한다.
buildTypes {
release {
...
proguardFiles 'proguard-kakao.pro'
}
}