Open name27 opened 1 year ago
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:login_test/controller/auth_controller.dart';
import 'package:login_test/firebase_options.dart';
import 'package:login_test/page/login_page.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return GetMaterialApp(
initialBinding: BindingsBuilder(() {
Get.put(AuthController());
}),
home: const LoginPage(),
);
}
}
import 'package:firebase_auth/firebase_auth.dart';
import 'package:get/get.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:login_test/page/login_page.dart';
import 'package:login_test/page/main_page.dart';
class AuthController extends GetxController {
final Rxn<User> user = Rxn<User>();
User? get userr => user.value;
//구글 로그인
signInWithGoogle() async {
// Trigger the authentication flow
final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();
// Obtain the auth details from the request
final GoogleSignInAuthentication? googleAuth =
await googleUser?.authentication;
// Create a new credential
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth?.accessToken,
idToken: googleAuth?.idToken,
);
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithCredential(credential);
}
signout() async {
await GoogleSignIn().signOut();
FirebaseAuth.instance.signOut();
}
@override
void onInit() {
super.onInit();
FirebaseAuth.instance.authStateChanges().listen((value) {
user(value);
if (value != null) {
Get.to(() => const MainPage());
} else {
print('로그아웃');
Get.to(() => const LoginPage());
}
});
}
}
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:login_test/controller/auth_controller.dart';
class LoginPage extends GetView<AuthController> {
const LoginPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: controller.signInWithGoogle,
child: const Text('구글 로그인'),
),
),
);
}
}
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:login_test/controller/auth_controller.dart';
class MainPage extends GetView<AuthController> {
const MainPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(controller.userr!.email ?? ''),
ElevatedButton(
onPressed: controller.signout,
child: const Text('로그아웃'),
),
],
)));
}
}
Firebase 설정/프로젝트 설정/일반/내 앱/디지털 지문 추가
키 생성
C:\Users\c\.android>keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -keysize 2048 -validity 10000
C:\Users\c\.android>keytool -genkey -v -keystore release.keystore -alias androidreleasekey -keyalg RSA -keysize 2048 -validity 10000
키 조회
C:\Users\c\.android>keytool -list -v -keystore debug.keystore -alias androiddebugkey
C:\Users\c\.android>keytool -list -v -keystore release.keystore -alias androidreleasekey
디지털 지문 추가
SHA1 키 등록 SHA256 키 등록
SDK 안내 보기 클릭 - 그대로 따라한다