概要
どうも、@daiki1003です!
「Facebookログインを実装したいけど何から初めて良いか分からないよ…」
今回の記事では、そんなあなたのために
Flutter x Firebase AuthでのFacebookログインについて詳しく解説しています!
あなたがやることは
クリックとコピペのみです!
めっちゃ簡単!
前提
今回の記事では、Firebaseプロジェクトは作成されていると言う前提で書いています。
もし、まだでしたら下記からお願いします!
2,3分で出来ると思います。
今回のソースコード
例によって、サンプルコードはgithubにあげてあります。
firebase_facebook ブランチに移動して
・bundleID
・GoogleService-Info.plist または google-services.json
を設定すればすぐに動きます。
ここからの流れ
以下の5ステップとなります。
どれもクリック or コピペで出来ます!
1. Firebase側でFacebook認証の設定
2. Facebook Developersでのログイン設定
3. Flutter側でFacebook認証の設定
4. Facebookでログイン
5. Flutter側でFacebookによる認証情報をFirebaseに送信
Firebase側でのFacebook認証の設定
Firebaseコンソールにアクセス
Authenticationを選択
Sign-in Methodの選択
Facebookの選択
「アプリケーションID」と「アプリ シークレット」を入力して保存
ここで、リダイレクトURIをコピーします。
Facebook Developersでのログイン設定
Facebook Developersでのアプリ登録、Facebookログインの設定
こちらに関しては、とても長くなるので別記事で解説しています。
リダイレクトURIの設定
「Facebookログイン」 > 「設定」を開くとこの様な画面になります。
先ほどコピーしたリダイレクトURIをペーストします。
Flutter側でFacebook認証の設定
flutter_facebook_loginのインストール
flutter_facebook_loginをインストールします。
インストールの方法が分からない方はこちらの記事を参考にしてみてください。
firebase_authのインストール
まだの人はfirebase_authもインストールしておいてください!
これで、準備完了です!
Facebookでログイン
認証部分
import 'package:flutter_facebook_login/flutter_facebook_login.dart'; import 'package:firebase_auth/firebase_auth.dart'; static final facebookLogin = FacebookLogin(); void logIn() async { final result = await facebookLogin.logIn(['email']); switch (result.status) { case FacebookLoginStatus.loggedIn: final credential = FacebookAuthProvider.getCredential( accessToken: result.accessToken.token); final authResult = await FirebaseAuth.instance.signInWithCredential(credential); print(authResult.user.uid); break; case FacebookLoginStatus.error: print('error, ${result.errorMessage}'); break; case FacebookLoginStatus.cancelledByUser: print('cancelled'); break; } }
FacebookLogin クラスをインスタンス化します。
こちらがlogInやlogOutメソッド、またisLoggedInなどのプロパティを保持しているクラスです。
このインスタンスに対してlogInを投げると Future<FacebookLoginResult> が
取得出来ますので、その結果に応じて処理をしています。
Flutter側でFacebookによる認証情報をFirebaseに送信
さて、成功した場合は認証情報をFirebaseに伝えなければいけません。
final credential = FacebookAuthProvider.getCredential( accessToken: result.accessToken.token); final authResult = await FirebaseAuth.instance.signInWithCredential(credential);
FacebookAuthProvider は firebase_auth プラグインに含まれているクラスです。
getCredentialで認証情報をアクセストークンより取得して、それをsignInWithCredentialに伝えています。
さいごに
いかがでしたでしょうか?
やはりFirebaseを使うとコピペとクリックだけでいけてしまいますね…。
恐ろしやw
Twitterフォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント