기타/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에 의존성을 추가한다
이러면 이제 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 뜯으면서 영어 문서를 보니 한글의 소중함을 느꼈다...
반응형