[의문] 안드로이드가 Google SignIn이 되지 못하는 이유와 해결 방법[Fluter/Firebase]

개시하다


개발 환경에는 문제가 없지만 정식 환경에서는 안드로이드의 Google SignIn만 사용할 수 없습니다.
Flutter 및 Firebase를 사용하여 개인 개발을 수행하는 동안 발생한 오류입니다.
이 때문에
  • 눈치채기 힘든 것 같아
  • 원인에 대한 인식이 정확한지 자신이 없으면 제게 알려주세요
  • 그래서 나누고 싶어요.
    나는 이 잘못에 반년 정도 괴로웠다...

    이 issue가 열린 것은 6개월 전...

    배경 설명

  • 개발 환경(21년 5월 오류 제거 기준)
  • Flutter 2.2.0 (stable)
    Dart sdk: ">=2.12.0 < 3.0.0"
    google_sign_in: ^5.0.4
    

  • 오류 개요
    정식 경기 환경에서는 안드로이드의 Google SignIn을 실행할 수 없습니다.

  • 오류 내용 상세 설명
    안드로이드Google SignIn와 Firebase Auth를 이용한 로그인에서 다음 오류가 발생하여 작동하지 않는 현상입니다.
  • (PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 12500: , null))
    
    추가
    개발 환경은 문제가 없고 정식 환경만 오류가 발생한다.
    iOS에 문제가 없는 기능입니다.
    다른 로그인 기능(메일 인증, SignIn with Apple)에도 문제가 없습니다.

    원인 및 해결 방법


    까닭


    안드로이드의 API 키가 안드로이드 앱에만 접근할 수 있도록 인증 제한이 이뤄진 것으로 추정된다.

    해결책


    인증 제한이 없으면 문제없습니다.
    수정 단계(이미지 포함)

    1. Google Cloud Platform에서 API 및 서비스→인증 정보



    2. 적절한 API 키 클릭



    3. 애플리케이션 제한 없이 변경



    설명


    이번 실수는요.
    ・Google SignIn은 웹 프로세스를 기반으로 합니다.
    • 그러나 인증 API는 안드로이드에 한합니다.
    • 이로 인해 인증에 오류가 발생했습니다.
    나 혼자 이해했어.
    잘못된 해결책을 조사할 때
    "Andorid는 Sign in with Apple을 통해 로그인할 수 없습니다."
    이런 issue를 발견했습니다.
    https://github.com/firebase/firebase-android-sdk/issues/1757
    한번 살펴보니 공식에 이런 답안이 실렸다.
    Hey there, Malcolm from Firebase here!
    This is a known behavior, and is due to the fact that Apple Sign-In is based on a Web flow - it kicks you to a browser to do the sign-in and then takes you back. As a result, your API key is used in a web context, so restricting >your API key to only work on Android breaks this feature.
    As is presently stands, API key restrictions provide minimal benefit for Android - all it does is make it so that certain headers must show up on the request in order to be accepted. We're working on better ways to solve this issue right now, but I would suggest foregoing API key restrictions for now (since it does very little) if you need to use Apple Sign-In.
    Thanks,
    ~Malcolm
    요컨대
    애플 Sign-In은 웹 프로세스를 기반으로 합니다.
    결과적으로 API 키는 웹 페이지 컨텍스트에서 사용되므로 API 키를 안드로이드에서만 실행하도록 제한하면 이 기능을 사용할 수 없습니다.
    몰라요.
    여기서 GCP를 확인하라는 프롬프트가 표시되면 안드로이드의 API 키는 Andorid 응용 프로그램만 사용합니다.
    (괜찮은 것 같아서 정식 공연 환경만 제한했어요...)

    이곳의 제한이 잃어버린 곳, 안전 기능.
    나는 무엇을 해도 안 되고 개발 환경에 제한이 없다고 추측하여 작용을 하여 위에 쓴 결론을 얻었다.
    참고로 안드로이드 인증만 제한해도
    현재로서는 API 키를 제한해도 안드로이드에 좋을 게 없고, 요청을 받아들이기 위해 특정한 제목만 표시한다.
    그런 것 같아요.
    자신의 결론에 대해 어떤 정보와 견해가 있다면 반드시 공유해 주십시오🙏

    참조: 시도하는 방법


    이 방법에 도달하기 전에, 나는 시험해 본, 검사한 방법을 위에 놓을 것이다.
    참고와 학습을 했습니다. 보도 제공자 여러분 감사합니다.🙏
    https://stackoverflow.com/questions/56188338/platformexception-platformexceptionsign-in-failed-com-google-android-gms-comm
    https://qiita.com/hiraski/items/c5fb20da4a8862ec72ea
    https://stackoverflow.com
    https://developer.android.com

    개인 개발 응용 프로그램


    엔지니어는 아니지만 개인 개발에 취미를 두고 BIG3 레코드 관리 애플리케이션'Lifter Log'을 발표하고 있습니다.
  • iOS 버전
  • android 버전
  • Flutter 및 Firebase, Cloud Function에서 개발되었습니다.
    능력 향상에 관심이 없으면 어떻게 활용해야 할지 전혀 몰라요. 가능하면 만져보세요!

    좋은 웹페이지 즐겨찾기