flutter로 프로젝트를 만돌고 있습니다.
에뮬레이터에서는 카카오 로그인이 성공을 합니다. 그런데 APK파일로 추출하면 로그인 계속하기 페이지로 넘어가지 않고 깜빡거리기만 합니다.
해시키 문제인가 싶어 구글 클라우드 Oauth와 구글 스토어 콘솔에 올라와 있는 sh1를 해시키로 변환하여 해시키 등록도해봤고, 제 프로젝트에서 뽑아낼 수 있는 모든 해시키는 전부 뽑아내어 입력했는데도 모두 apk 파일에서는 먹히지 않습니다. 물론 인터넷 설정도 되어있구요.
방법을 모르겠습니다.
안녕하세요.
확인을 위해 앱 ID 부탁드립니다.
앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다
ex) 123456
1068984 입니다.
현재는 에뮬레이터로 카톡로그인 이후 메인페이지로 이동은 하나,
"I/flutter ( 4861): Kakao & Firebase 로그인 오류: [firebase_auth/invalid-custom-token] The custom token format is incorrect. Please check the documentation. [ Invalid assertion format. 3 dot separated segments required.
"라는 에러가 뜹니다.
검색을 많이 해보고 chatGPT로도 해결이 안되네요… 뭐가 문제인지 모르겠습니다.
{"error":"misconfigured","error_description":"invalid android_key_hash or ios_bundle_id or web_site_url","error_code":"KOE009"}
에러가 다수 확인됩니다. APK 파일로 빌드한 앱의 키해시를 등록안해서 발생하는 에러입니다.
아래 내용 참고하셔서 키해시 로깅 해보시면 좋을 것 같습니다.
제가 "final keyHash = await kakao.KakaoSdk.origin;
print(‘해시키 확인: $keyHash’);"코드를 통해 확인한 해시키는 “GrZ~~~~~~yY=” 입니다. 혹시 해시키가 다르게 확인되나요?
May 20, 2024 @ 11:31:20.821 에러는 HFVBQ********************zg= 입니다.
이시간 이후로는 에러가 없는데요. 지금도 에러 발생하나요?
“GrZ~~~~~~yY=” 키해시 요청은 모두 정상 응답 전달되고 있습니다.
“GrZ~~~~~~yY=” 키로 여전히 출력되고,
echo “${PRINTCERT}” | xxd -r -p | openssl base64 이 명령어를 입력해서 구글과 firebase에 등록되어있는 sh1키를 해시키로 추출하여 등록을 했는데도 여전히 " Kakao & Firebase 로그인 오류: [firebase_auth/invalid-custom-token] The custom token format is incorrect. Please check the documentation. [ Invalid assertion format. 3 dot separated segments required."오류가 발생하고 있습니다…
그렇다면 키해시 문제가 아니고 개발하신 앱내 문제로 보입니다.
카카오측 서버로그상 카카오 로그인 인가코드요청 - 액세스 토큰 발급 - 사용자 정보조회 모두 정상처리되었습니다.
카카오와 무관한 문제로 firebase_auth 커스텀 토큰 형식 에러 같은데요?
아무래도 그런 것 같습니다. firebase측에 문의를 넣어놨습니다 ㅠㅠ 쉽지 않네요, 답변 감사합니다:)
Firebase 로그인 오류: [firebase_auth/invalid-custom-token] The custom token format is incorrect. Please check the documentation. [ Invalid assertion format. 3 dot separated segments required.
firebase_auth 의 custom-token은 JWT를 사용하는 것 같은데요. 카카오 액세스 토큰을 JWT로 변환하셔서 사용하시나요?
아니면 카카오 로그인 OIDC 스펙의 JWT를 받아서 전달하나요?
에뮬레이터에서는 카카오 로그인이 성공을 합니다
애뮬레이터에서 정상 작동하신다는 것을 볼때 JWT을 생성 또는 변환 과정이 내부적으로 있나요?
저는 shared_preferences라이브러리를 통해 로컬에 저장을 할 수 있도록 해놨어요,
현재 Firebase Admin SDK를 사용하여 카카오 사용자 ID를 기반으로 Firebase 커스텀 토큰을 생성하고 있습니다. 구체적으로, 카카오 로그인 후 얻은 사용자 ID를 Firebase 사용자 ID로 매핑하고, 이를 기반으로 Firebase Admin SDK를 통해 커스텀 토큰을 생성합니다. 현재는 카카오 액세스 토큰을 JWT로 변환하거나 OIDC 스펙의 JWT를 사용하는 방식은 아니에요ㅜ
애뮬레이터에서 성공한다는 말은, 일단 메인페이지로 넘어간다는 것인데, 그렇다면 해시키 자체는 문제없다는 의미일수도 있을 것 같은데요, 그런데 로그에서는 카카오 로그인은 성공하나 위와 같은 custom token 이슈가 발생하여 firebase authentication에 등록이 안되고, cloud firestore에 기록이 연동되지 않아요ㅠ
진짜 힘들었네요…
cloud run으로 가서 보안 - 인증 모두 허용 으로 설정했더니 됐습니다…^^;
답변해주셔서 감사합니다!