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 객체도 삭제됩니다.
반응형