Flutter, 플러터

Flutter(플러터) 구글로그인(Google Oauth) 구현

Rhats 2023. 3. 3. 13:14
반응형

Flutter(플러터) 구글로그인(Google Oauth) 구현

Flutter에서 Google OAuth를 사용하려면, Google API Console에서 OAuth 2.0 클라이언트 ID를 만들어야 합니다. 이후 Flutter 애플리케이션에서 google_sign_in 패키지를 사용하여 OAuth 인증을 처리할 수 있습니다.

1.Google API Console에서 OAuth 2.0 클라이언트 ID 생성

  • Google API Console에 로그인합니다.
  • 새 프로젝트를 만들거나 기존 프로젝트를 선택합니다.
  • 왼쪽 탐색 메뉴에서 "사용자 인증 정보"를 클릭합니다.
  • "사용자 인증 정보 만들기" 버튼을 클릭하여 "OAuth 클라이언트 ID"를 선택합니다.
  • "어플리케이션 유형"을 "Android"로 선택합니다.
  • "패키지 이름"과 "SHA-1 지문"을 입력합니다.
  • "만들기" 버튼을 클릭하여 OAuth 2.0 클라이언트 ID를 생성합니다.

2.google_sign_in 패키지 추가

Flutter 애플리케이션에서 Google OAuth를 사용하기 위해서는 google_sign_in 패키지를 추가해야 합니다. pubspec.yaml 파일에 다음과 같이 추가합니다.

 

 

 

 

yaml

dependencies:
  google_sign_in: ^5.0.1

 

3.Google OAuth 로그인 처리

Google OAuth 로그인 처리를 위해서는 google_sign_in 패키지에서 제공하는 GoogleSignIn 클래스를 사용합니다.

dart

import 'package:google_sign_in/google_sign_in.dart';

final GoogleSignIn googleSignIn = GoogleSignIn();

Future<void> signInWithGoogle() async {
  final GoogleSignInAccount? googleSignInAccount = await googleSignIn.signIn();
  final GoogleSignInAuthentication googleSignInAuthentication =
      await googleSignInAccount!.authentication;

  final OAuthCredential credential = GoogleAuthProvider.credential(
    accessToken: googleSignInAuthentication.accessToken,
    idToken: googleSignInAuthentication.idToken,
  );

  final UserCredential userCredential =
      await FirebaseAuth.instance.signInWithCredential(credential);
  final User user = userCredential.user!;
}

위 코드에서 signInWithGoogle() 함수를 호출하면 Google 로그인 페이지가 열리고, 사용자가 로그인하면 GoogleSignInAuthentication 객체를 반환합니다. 이 객체에서 accessToken과 idToken을 가져와서 Firebase 인증에 사용할 수 있는 OAuthCredential 객체를 생성합니다. 마지막으로, FirebaseAuth.instance.signInWithCredential() 메서드를 사용하여 Firebase 인증을 수행합니다.

 

4.Google OAuth 로그아웃 처리

Google OAuth 로그아웃 처리는 다음과 같이 구현할 수 있습니다.

dart

import 'package:google_sign_in/google_sign_in.dart';

final GoogleSignIn googleSignIn = GoogleSignIn();

Future<void> signOutGoogle() async {
  await googleSignIn.signOut();
}

위 코드에서 signOutGoogle() 함수를 호출하면 현재 사용자가 로그아웃되고 GoogleSignInAuthentication 객체도 삭제됩니다.

반응형