Flutter 구글 인증
Flutter에서 Google 인증을 구현하려면 firebase_auth
와 google_sign_in
패키지를 사용해야 합니다. 아래는 Flutter 애플리케이션에서 Google 인증을 설정하는 단계별 가이드입니다.
1. Firebase 설정
- Firebase 프로젝트 생성:
- Firebase 콘솔에 접속하여 새 프로젝트를 생성합니다.
- Firebase 프로젝트에 앱 추가:
- Firebase 프로젝트에 Android 또는 iOS 앱을 추가합니다. (각 플랫폼에 대한 설정은 Firebase 콘솔의 지침을 따릅니다.)
- Firebase 인증 설정:
- Firebase 콘솔에서 인증 탭으로 이동하여 ‘Sign-in method’를 선택합니다.
- Google을 활성화하고 필요한 정보를 입력합니다.
2. Flutter 프로젝트 설정
- 프로젝트에 필요한 패키지를 추가:
pubspec.yaml
파일에firebase_auth
와google_sign_in
패키지를 추가합니다.
dependencies:
flutter:
sdk: flutter
firebase_core: latest_version
firebase_auth: latest_version
google_sign_in: latest_version
- Firebase 초기화:
- Flutter 프로젝트의 시작 파일 (
main.dart
)에서 Firebase를 초기화합니다.
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Google Sign-In')),
body: SignInDemo(),
),
);
}
}
- Google Sign-In 구현:
- Google Sign-In 및 Firebase 인증을 위한 로직을 작성합니다.
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:flutter/material.dart';
class SignInDemo extends StatefulWidget {
@override
_SignInDemoState createState() => _SignInDemoState();
}
class _SignInDemoState extends State<SignInDemo> {
final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn googleSignIn = GoogleSignIn();
Future<User?> _signInWithGoogle() async {
final GoogleSignInAccount? googleUser = await googleSignIn.signIn();
if (googleUser == null) {
// 사용자가 로그인 취소
return null;
}
final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
final UserCredential userCredential = await _auth.signInWithCredential(credential);
final User? user = userCredential.user;
return user;
}
@override
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
child: Text('Sign in with Google'),
onPressed: () async {
User? user = await _signInWithGoogle();
if (user != null) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text('Sign in ${user.displayName} with Google'),
));
}
},
),
);
}
}
이제 Google 인증이 Flutter 애플리케이션에 설정되었습니다. 이 코드를 통해 사용자는 Google 계정을 사용하여 애플리케이션에 로그인할 수 있습니다. 추가적으로, Android와 iOS 설정에 따라 네이티브 설정이 필요할 수 있으니 Firebase 문서를 참고하세요.