毎日Flutter。
今日はFirebaseで認証をします。
Pubはこれ(firebase_auth)ですね。
google_sign_inを追加する
まずはgoogle_sign_inを追加します。
pubspec.yaml
に下記追記して、flutter packages get
。
dependencies: flutter: sdk: flutter image_picker: google_sign_in: ^4.0.1+1 # new! firebase_storage:
main.dart
にimport
を追記します。
import 'package:google_sign_in/google_sign_in.dart';
firebase_authを追加する
build.gradle
にclasspathを追記するのは前回やったので省略。
pubspec.yaml
とmain.dart
にそれぞれ下記追記します。pubspec
変更後はflutter packages get
。
dependencies: flutter: sdk: flutter image_picker: google_sign_in: ^4.0.1+1 firebase_auth: # new! firebase_storage:
import 'package:firebase_auth/firebase_auth.dart';
ログイン画面の追加
main.dart
に下記を追記し、MyApp
クラスからMyGoogleLoginPage()
を呼び出すように変更します。
class MyGoogleLoginPage extends StatefulWidget { @override _MyGoogleLoginPageState createState() => _MyGoogleLoginPageState(); } class _MyGoogleLoginPageState extends State<MyGoogleLoginPage>{ final GoogleSignIn _googleSignIn = GoogleSignIn(); final FirebaseAuth _auth = FirebaseAuth.instance; Future<FirebaseUser> _handleSignIn() async { final GoogleSignInAccount googleUser = await _googleSignIn.signIn(); final GoogleSignInAuthentication googleAuth = await googleUser.authentication; final AuthCredential credential = GoogleAuthProvider.getCredential( accessToken: googleAuth.accessToken, idToken: googleAuth.idToken, ); final FirebaseUser user = await _auth.signInWithCredential(credential); print("signed in " + user.displayName); return user; } @override Widget build(BuildContext context){ return Scaffold( appBar: AppBar( title: Text('none'), ), body: Center( child: Column( children: <Widget>[ SizedBox(height: 24.0), FlatButton( child: Text('SignIn'), onPressed: () => _handleSignIn() .then((FirebaseUser user) => print(user)) .catchError((e) => print(e)) ), ], ), ), ); } }
googleにログインができるようになりました!