Flutter/Flutter 강좌
Flutter + Firebase + Google Sign
하랑파파♡
2019. 8. 20. 09:15
#Flutter + Firebase + Google Sign
-Firebase 프로젝트 생성
-android 설정
-> Firebase 프로젝트에 android 추가
- android/app/src/main/AndroidManifest.xml 에서 패키지명 복사해서
Firebase 프로젝트 android 패키지명에 붙여넣기
- 디버그 서명 인증서 SHA-1 등록
=> Window
keytool -exportcert -list -v -alias androiddebugkey -keystore C:\Users\{user name}\.android\debug.keystore
=> mac
keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
※ 디버그 키 스토어의 기본 비밀번호는 android
-> 앱 등록 클릭
-> google-services.json 파일을 다운로드
-> google-services.json 파일을 Flutter 앱의 android/app 디렉토리로 이동
-> android/app/build.gradle 파일의 제일 하단에 아래 내용 추가
apply plugin: 'com.google.gms.google-services'
-> android/build.gradle에서 buildscript 태그 안에 새 종속성 항목을 추가
buildscript {
repositories {
// ,,,
}
dependencies {
// ...
classpath 'com.google.gms:google-services:3.2.1' // new
}
}
-> pubspec.yaml 파일에 플러그인 추가
firebase_auth: ^0.6.2+1
google_sign_in: ^3.2.2
-> Google Sign 기능 만들기
#Sample
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn googleSignIn = new GoogleSignIn();
Future<FirebaseUser> _signIn() async {
GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn();
GoogleSignInAuthentication gSA = await googleSignInAccount.authentication;
FirebaseUser user = await _auth.signInWithGoogle(
idToken: gSA.idToken,
accessToken: gSA.accessToken,
);
print("User Name : ${user.displayName}");
// print("User Name : ${user}");
return user;
}
void _signOut() {
googleSignIn.signOut();
print("User Signed out");
}
@override
void initState() {
// TODO: implement initState
super.initState();
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Firebase Demo"),
),
body: new Padding(
padding: const EdgeInsets.all(20.0),
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
new RaisedButton(
onPressed: () => _signIn()
.then((FirebaseUser user) => print(user))
.catchError((e) => print(e)),
child: new Text("Sign In"),
color: Colors.green,
),
new RaisedButton(
onPressed: _signOut,
child: new Text("Sign out"),
color: Colors.red,
),
],
),
),
);
}
}