👉 Authentication 기능은 Firebase에서 기본적으로 지원해주는 기능.
- 사용자 인증과 관련된 기능으로 로그인 기능을 지원하는게 대표적이다. 로그인 외에도 익명 로그인, 이메일 인증, 전화번호 인증 등도 지원하고 있고, 소셜 로그인을 통한 인증도 지원하고 있다.
- 소셜 로그인은 Firebase에서 허용한 소셜 로그인 제공 업체만 사용이 가능하며, 주로 사용하는 Google, Apple, Facebook 로그인 사용이 가능하다. 이밖에도 Yahoo, Github, Twitter, Microsoft, Play Games, Geme Center 등을 지원하고 있다.
- Authentication 기능을 사용해서 사용자 인증 처리를 진행하면 UID라고 하는 사용자 인증 코드 생성 및 관리가 편리하다.
- UID : Firestore 데이터 베이스 보안 규칙의 기준이 되는 키
Flutter 앱에 Firebase 추가
Flutter 프로젝트 디렉터리의 루트에서 다음 명령어를 실행

Firebase 프로젝트를 어떤 플랫폼에서 사용할지 선택
Android 앱의 패키지 이름 (application id) 을 입력
android/app/build.gradle 파일→ defaultConfig 블록의 applicationIdflutter pub add firebase_core
flutterfire configure
lib/main.dart 파일에서 Firebase core 플러그인 및 앞에서 생성한 구성 파일을 가져오기 import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
lib/main.dart 파일에서 구성 파일로 내보낸 DefaultFirebaseOptions 객체로 → Firebase 초기화 void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}
com.example.todo_practice와 정확히 일치하는지 확인android/app 디렉토리에 복사
<uses-permission android:name="android.permission.INTERNET "/>
ios/Runner디렉토리에 복사REVERSED_CLIENT_ID 그대로 입력
dependencies:
google_sign_in: ^6.2.2
class FirebaseClient {
static final FirebaseClient instance = FirebaseClient._internal();
FirebaseClient._internal();
factory FirebaseClient() {
return instance;
}
final FirebaseAuth auth = FirebaseAuth.instance;
...
Future<UserCredential> signInWithGoogle() async {
final googleSignIn = GoogleSignIn();
// Google 로그인 시작
final googleAccount = await googleSignIn.signIn();
if (googleAccount == null) {
throw PlatformException(
code: 'CANCELED', message: 'Sign-in process was canceled.');
}
final googleAuth = await googleAccount.authentication;
final credential = GoogleAuthProvider.credential(
idToken: googleAuth.idToken,
accessToken: googleAuth.accessToken,
);
// Firebase로 로그인
return auth.signInWithCredential(credential);
}
}