Flutter/SNS Login

[Flutter] Google Login 구현

주톨 2024. 10. 10. 04:24
728x90

 

https://jutole.tistory.com/159

 

[Flutter] Google Login 설정 - feat.Firebase

시작에 앞서 Firebase 기본 설정은 맞추셔야 합니다.  1. Firebase 로그인 제공업체 추가 Authentication -> 로그인 방법 -> 새 제공업체 추가 -> Google 선택    중요 메시지를 확인하고 사용 설정을 선택

jutole.tistory.com

 

설정이 안 되어 계신다면 설정먼저 하고 와주세요.

 

 

 

1. google_sign_in 패키지 설치

https://pub.dev/packages/google_sign_in

 

google_sign_in | Flutter package

Flutter plugin for Google Sign-In, a secure authentication system for signing in with a Google account.

pub.dev

 

 

2.  firebase_auth 패키지 설치

https://pub.dev/packages/firebase_auth

 

firebase_auth | Flutter package

Flutter plugin for Firebase Auth, enabling authentication using passwords, phone numbers and identity providers like Google, Facebook and Twitter.

pub.dev

 

 

3. 구현

Google Login을 하기 위한 준비가 끝났습니다.

 

(구현 예시 코드입니다.)

import 'package:google_sign_in/google_sign_in.dart';

Future<UserCredential> signInWithGoogle() async {
  // Trigger the authentication flow
  final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();

  // Obtain the auth details from the request
  final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication;

  // Create a new credential
  final credential = GoogleAuthProvider.credential(
    accessToken: googleAuth?.accessToken,
    idToken: googleAuth?.idToken,
  );

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithCredential(credential);
}

 


GoogleSignIn().signIn()

 

구글 로그인 화면을 열고 로그인을 진행합니다. 사용자가 로그인을 진행하지 않고 복귀 시에는 null을 반환합니다. 사용자가 로그인을 진행하였으면 아래와 같은 정보들을 가지고 옵니다.

 


googleUser.authentication

 

로그인으로 얻은 정보를 가지고 *idToken과 accessToken*을 받아오기 위한 작업입니다. 해당 토큰으로 Google 서비스와 상호작용할 수 있도록 하는 중요한 단계입니다.


GoogleAuthProvider.credential

 

Google에서 받은 토큰을 가지고 Firebase에서 사용할 수 있도록 변환하는 과정입니다.


FirebaseAuth.instance.signInWithCredential

 

최종적으로 Firebase에서 사용자를 로그인 처리하고, 성공 시 해당 사용자의 정보를 가져옵니다.

 

 

4. 확인

 

 

로그인을 성공하고 나면 Firebase에서 위에 사진처럼 SocialLogin 한 유저를 확인할 수 있습니다.