기타/Flutter

[Flutter] google_sign_in idToken null 해결법

mopil 2023. 11. 19. 04:49
반응형

플러터에서 구글 소셜 로그인을 구현할 때, idToken이 null로 오는 경우가 있다.

 

(현재 파이어베이스 연동을 안 하고, 백엔드 서버로 accessToken이 아닌 idToken을 전송해서 로그인/회원가입을 진행하는 방식으로 구현 중이다.)

 

이는 안드로이드, 파이어베이스 미사용일 때 발생하는 오류라고 하더라

 

한글로 정리된 문서를 못 찾아서 플러터 공식 issue 찾아가면서 겨우 해결했다... (개삽질...) 그래서 잊어버리지 않도록 공유하고자 한다.

 

# 환경

  • 애뮬레이터 : Pixel 2 API 30
  • google_sign_in : ^6.1.5

# 해결

https://github.com/flutter/flutter/issues/20903

대충 해석하자면, 비 파이어베이스 사용 안드로이드 유저들에게 발생하는 에러고 다음과 같이 해결한다.

  • GCP에서 웹 클라이언트 전용 사용자 인증 ID를 만든다
  • 클라이언트 ID를 strings.xml 파일을 만들어서 안드로이드 폴더 밑에 넣는다. (필자는 app/src/main에 넣었다)
  • build.gradle에 의존성을 추가한다

 

strings.xml은 이렇게 작성하면 된다

 

이러면 이제 idToken값을 받아올 수 있다.

  final GoogleSignInAccount? googleAccount = await googleSignIn.signIn();
  if (googleAccount == null) {
    log('Google login was cancelled by the user');
    return;
  }
  final GoogleSignInAuthentication googleAuth =
      await googleAccount.authentication;

  log('googleAuth : ${googleAuth.accessToken}');
  String idToken = googleAuth.idToken ?? ''; // 여기서 계속 null이 나왔었음;;

 

 

오랜만에 공식 레포 issue 뜯으면서 영어 문서를 보니 한글의 소중함을 느꼈다...

반응형