Flutter 프로젝트 설정 #
1flutter create my_project
2cd my_projectFirebase 설정 #
- Firebase Console에 가서 새 프로젝트를 생성한다.
- 안드로이드 앱을 추가한다.
- 패키지 이름을 입력합니다. - 예: com.example.my_project
- google-services.json 파일을 다운로드한다.
- 다운로드한 google-services.json 파일을 android/app Directory에 추가한다.
Dependencies 추가 #
pubspec.yaml 파일을 열고 google_sign_in과 firebase_auth 패키지를 추가한다.
1dependencies: 2 flutter: 3 sdk: flutter 4 google_sign_in: ^6.1.0 5 firebase_auth: ^4.5.0 6 firebase_core: ^2.16.0그런 다음, 패키지를 설치한다.
1flutter pub get
Android 설정 #
android/build.gradle파일을 열고 classpath에 Google 서비스 플러그인을 추가한다.1buildscript { 2 dependencies { 3 ...✂... 4 classpath 'com.google.gms:google-services:4.3.15' // 최신 버전 확인 5 } 6}그 다음
android/app/build.gradle파일을 열고 아래를 추가한다.1apply plugin: 'com.google.gms.google-services' 2 3android { 4 ...✂... 5 defaultConfig { 6 ...✂... 7 minSdkVersion 21 8 } 9}
Firebase 초기화 #
lib/main.dart파일을 열고 Firebase를 초기화한다.1import 'package:flutter/material.dart'; 2import 'package:firebase_core/firebase_core.dart'; 3import 'package:google_sign_in/google_sign_in.dart'; 4import 'package:firebase_auth/firebase_auth.dart'; 5 6void main() async { 7 WidgetsFlutterBinding.ensureInitialized(); 8 await Firebase.initializeApp(); 9 runApp(MyApp()); 10} 11 12class MyApp extends StatelessWidget { 13 @override 14 Widget build(BuildContext context) { 15 return MaterialApp( 16 home: SignInScreen(), 17 ); 18 } 19}
Google 로그인 기능 구현 #
- SignInScreen 클래스를 추가하여 Google 로그인 기능을 구현한다.
1class SignInScreen extends StatelessWidget { 2 final GoogleSignIn googleSignIn = GoogleSignIn(); 3 final FirebaseAuth firebaseAuth = FirebaseAuth.instance; 4 5 Future<User?> _signInWithGoogle() async { 6 final GoogleSignInAccount? googleUser = await googleSignIn.signIn(); 7 final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication; 8 9 final AuthCredential credential = GoogleAuthProvider.credential( 10 accessToken: googleAuth?.accessToken, 11 idToken: googleAuth?.idToken, 12 ); 13 14 UserCredential userCredential = await firebaseAuth.signInWithCredential(credential); 15 return userCredential.user; 16 } 17 18 @override 19 Widget build(BuildContext context) { 20 return Scaffold( 21 appBar: AppBar(title: Text("Google Sign In")), 22 body: Center( 23 child: ElevatedButton( 24 onPressed: () async { 25 User? user = await _signInWithGoogle(); 26 if (user != null) { 27 print("로그인 성공: ${user.displayName}"); 28 } 29 }, 30 child: Text("Google로 로그인"), 31 ), 32 ), 33 ); 34 } 35}
권한 설정 #
- AndroidManifest.xml 파일에 인터넷 권한을 추가한다.
1<uses-permission android:name="android.permission.INTERNET"/>
Advertisement