概要
どうも、@daiki1003です!
「Google認証を実装したいけどどうしたら良いか分からない…。」
今回の記事では、そんなあなたのためにFlutter
x Firebase Auth
でのGoogle
ログインについて詳しく解説しています!
あなたがやることは
クリックとコピペのみです!
めっちゃ簡単!
前提
今回の記事では、Firebase
プロジェクトは作成されていると言う前提で書いています。
もし、まだでしたら下記からお願いします!
2,3分で出来ると思います。


今回のソースコード
例によって、サンプルコードはGitHubにあげてあります。firebase_google
ブランチに移動して
・bundleID
・GoogleService-Info.plist または google-services.json
を設定すればすぐに動きます。
ここからの流れ
以下の5ステップとなります。
どれもクリック or コピペで出来ます!
1. Firebase
側でGoogle Sign in
の設定
2. Flutter
側でGoogle Sign in
の設定
3. iOS
側でGoogle Sign in
の設定
4. Google
でログイン
5. Flutter
側でGoogle
による認証情報をFirebase
に送信
Firebase側でのGoogle Sign inの設定
Firebaseコンソールにアクセス
Authenticationを選択
ログイン方法の選択
Googleの選択
「有効にする」を選択し、「プロジェクトの公開名」と「プロジェクトのサポートメール」をそれぞれ入力、選択する
画面左の「プロジェクトの概要」右の歯車から「プロジェクトの設定」を選択
Androidアプリの設定画面でSHA1を入力
「ターミナル」等で各OS毎にコマンドを叩き、フィンガープリントのコピー
Mac/Linux
であれば
keytool -list -v \ -alias androiddebugkey -keystore ~/.android/debug.keystore
Windows
であれば
keytool -list -v \ -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
こちらをコピーします。
参考ページ。
設定画面に追加
これで完了です!
Flutter側でGoogle Sign inの設定
google_sign_inのインストール
`google_sign_in`をインストールします。
インストールの方法が分からない方はこちらの記事を参考にしてみてください。


firebase_authのインストール


まだの人はfirebase_auth
もインストールしておいてください!
これで、準備完了です!
iOS用Google Sign inの設定
GoogleServices-Info.plistのREVERSED_CLIENT_IDをコピー
Info.plistに以下記述のコピペ
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>$REVERSED_CLIENT_ID をコピペ</string>
</array>
</dict>
</array>
Googleでログイン
認証部分
GoogleSignIn
クラスをインスタンス化します。
その際にscopeの設定をします。
このインスタンスに対してsignIn
を投げると Future<GoogleSignInAccount>
が
取得出来ますので、その結果に応じて処理をしています。
Flutter側でGoogleによる認証情報をFirebaseに送信
さて、成功した場合は認証情報をFirebase
に伝えてあげましょう。
final auth = await signInAccount.authentication;
final credential = GoogleAuthProvider.getCredential(
idToken: auth.idToken,
accessToken: auth.accessToken,
);
FirebaseAuth.instance.signInWithCredential(credential);
GoogleAuthProvider
は firebase_auth
プラグインに含まれているクラスです。getCredential
で認証情報をidToken
及びアクセストークンより取得して、それをsignInWithCredential
に伝えています。
こうすることで、認証情報をFirebase
側が保持してくれます。
さいごに
いかがでしたでしょうか?
他のFirebase
の認証記事をみていただけると分かるのですが、ほぼやってる事同じ過ぎて
とても簡単に出来てしまいます。
Twitterフォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント