こんにちは、ニッパチです。
業務で作成中のFlutterアプリでGoogleアカウントでのログイン処理を実装する必要があったので
その調査していたのですが、その時につまった件について書いていきます。
MacがないのでAndroidのみの調査となっています。
つまづいたこと
調べた結果、firebaseの認証機能を使って実装するのが楽そうだったのでそれを採用しました。
以下サイトを参考にfirebaseの設定と実装を行ったところ、エラーが発生しました。https://zenn.dev/kazutxt/books/flutter_practice_introduction/viewer/30_chapter4_authentication#google%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AB%E3%82%88%E3%82%8B%E8%AA%8D%E8%A8%BCUnhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)
エラー内容を調べるとfirebaseと連携したアプリにフィンガープリントを設定する必要があるそうです。
設定しているのなぜ?となりました。
対応
今回のアプリではdart-define-from-file
を使ってビルド環境を分けていました。
それを念頭に置いて調べると以下のサイトで解決できました。
https://qiita.com/kazakago/items/e1027619d0361848f3b8#firebase%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E5%87%BA%E3%81%97%E5%88%86%E3%81%91
flutterfire configure --project [YOUR-PROD-PROJECT] --android-app-id com.yourdomain.yourapp[APP_ID_SUFFIX] --ios-bundle-id com.yourdomain[APP_ID_SUFFIX]
firebaseとアプリを連携する際にこのコマンドで連携するとビルド環境に応じてアプリが連携されるようになりました。
これによりフィンガープリントの設定がうまくいった状態になって認証処理が成功しました。
おわりに
ざっくり調査でしたけど、実装できそうでよかったです。
それと調査の最中にOAuthについて調べてて以下のサイトがすごい勉強になりました。
https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be