안드로이드에서 구글 signin/signout 설정

테디준·2022년 8월 6일

1. Signin-method 설정

우선 firebase Authentication에 들어가 Signin-method를 누르고 Google을 눌러 설정한다. 사용설정 버튼을 누르면 사용할 이메일을 입력하라고 나오면 현재 사용하는 것을 적는다.

위와 같이 나오면 우선 firebase에서 할 일은 끝이다. 만약 ios용 로그인을 만들면 반드시 apple로그인 기능을 넣어야 한다. 아니면 아예 받아주지 않는다.

2. SHA1 key 등록

터미널에 gradlew를 깔면 된다. 그런데 여기서 윈도우 사용자는 어려움을 겪게 된다. 나 역시 그랬다. 그 삽질에 대해서는 여기 링크를 건다. SHA1 키를 등록한 컴퓨터만 로그인이 된다. 다른 컴퓨터도 사용하고 싶다면 해당 컴퓨터의 SHA1을 등록해야 한다.

윈도우에서 gradlew signingReport 실행 안 될 때

3. signin을 위한 세팅

1) 터미널에 flutter pub add firebase_auth를 친다.

2) 터미널에 flutter pub add google_sign_in를 친다.

3) viewModel 파일에 아래의 코드를 복붙한다. 공식문서에 나와 있는 코드 그대로다. 굳이 어디를 바꾸거나 할 필요가 없다.

firebase Authentication 공식문서

4. signin 기능 버튼에 추가

ElevatedButton(
  onPressed: () {
  viewModel.signInWithGoogle();
  }, 
  child: const Text('Google 로그인')),
⛔ 구글 로그인 버튼을 누르면 원래 계정이 나오고 클릭하면 그냥 다시 로그인 화면으로 돌아온다. 로그인이 되서 들어간 화면이 되지 않는다. 왜지? 😳
class RootScreen extends StatelessWidget {
  const RootScreen({Key? key}) : super(key: key);

  
  Widget build(BuildContext context) {
    return StreamBuilder<User?>(
      stream: FirebaseAuth.instance.authStateChanges(),
      builder: (context, snapshot) {
        User? user = snapshot.data;
        if (user == null) {
          return const LoginScreen();
        }
        return BookListScreen();
      },
    );
  }
}
🤔 rootScreen을 만들어서 로그인 했을 때와 안 했을 때의 분기를 나눠주면 해결될 줄 알았는데, 왜 또 안되지?

5. signout 기능 추가

void logout() async {
    await _googleSignIn.signOut();
    await FirebaseAuth.instance.signOut();
  }

0개의 댓글