【Flutter】 Firebaseとの連携ができず奮闘しています。

UdemyでFlutter学習コースを購入するのにはまっています。

最近は、インスタグラムのクローンアプリが作れる、というコースをセールで購入。

Firebaseと連携するものだった(というか未修)のですが、講習通りに行ってもFirebaseとの連携ができず、原因を探っています。

その形跡を記していきます。

Firebase OAuthとの連携は、

1.Firebaseにプロジェクトを作る
2.手順に従い、build.gradleからApplicationIDを(プロジェクト作成時記入欄に)コピペ
3.手順に従い、google.services.jsonをFlutterプロジェクトapp下に設置
4.SHA1キーを設定
5.次へに進み、アプリをRunでビルドし、Firebaseがアプリケーションとリンクできたかどうかを確認する
6.https://console.developers.google.com/OAuth認証画面より、サポートメールを設定する

以上をするとできると説明されているのですが、いろいろなところでつまづいております。

以下エラー内容をいろいろ書こうと思ったのですが、相当紆余曲折したので収拾がつかず、まとめだけ書きます。

Duplicate class が出てアプリをビルドできなかった

Duplicate class com.google.android.gms.internal.measurement.zzu found in modules jetified-firebase-analytics-impl-16.2.2-runtime.jar (com.google.firebase:firebase-analytics-impl:16.2.2) and jetified-play-services-measurement-base-17.2.2-runtime.jar (com.google.android.gms:play-services-measurement-base:17.2.2)

このようなDuplicate classというエラーがでてしまい、ビルドが通りませんでした。結論から言うと、直りました。pubsupec.yamlに登録したパッケージのバージョンを最新のものに書き換えてflutter pub getしたら、ビルドは通りました。
上記の動画学習コースで紹介されていたパッケージが最新のものではなく、それを使っていたためにエラーが起きました。

こういう場合私はstackoverflowなどの質問サイトを見ながら修正を試みるのですが、さんざん彷徨ったのでだんだん人任せになり、もう誰か答えを下さい、という感じでした。イヤイヤ、答えは自分で見つけるもんだ。

どこかのサイトに、pubspec.yamlのバージョンを上げよとあったので、自分の求める質問と違いがあるものでしたが、対応してみることに。そうしたら、ビルドが通りました!

ビルド通すのに何日かかってんだい!!(心の声)

【教訓】
pubspec.yamlのバージョンを最新にするのは基礎。ビルドにつまづいたらまずこれを疑うこと。



OAuth同意画面の設定が必要だった

ビルドが通って、Googleのアカウント認証をするためのコードをFlutterで作り、実行を押してみると、またしてもビルドが通らなくなりました。

I/flutter (18667): Error Message:MissingPluginException(No implementation found for method init on channel plugins.flutter.io/google_sign_in)

このようなログが出てきて、原因を調べてまた長ーい時間がかかりました。

githubの質問サイトにて、https://console.developers.google.com/OAuth認証画面より、アイコンとサポートメールを設定しないといけないとあったので、いやいやそれは動画コースでちゃんと設定したはず、と思い確認に行くと、、

アプリの確認ステータスに「確認が必要」というステータスが出ていました。

「アプリケーションのロゴが更新されているため、アプリ登録で Google による確認を受ける必要があります。 アプリを準備し、確認のため送信してください。」

こういうのちゃんとチェックすべきですね。原因はここか!と思いコンソールの中を見てみることに。

すると、アイコンとメールはすでに設定済みなのですが、「確認のため送信」というボタンが下部にあり、それを押さなければならないのだなと思いました。
押してみると、入力が足りない旨が出てきて、

アプリケーション ホームページ] リンク
「公開するには、ホームページの URL が必要です。」
[アプリケーション プライバシー ポリシー] リンク
「公開するには、プライバシー ポリシーの URL が必要です。」とあったので、それらを設定することに。

ホームページリンクははてなブログの技術ブログでいいかな。
プライバシーポリシーはゲームを作った時に作ったのでこちらもはてなブログに新しい記事として作って設定してみよう。

すぐに作った簡易プライバシーポリシーをこの設定個所に記述すると、、、
「無効なドメイン: URL は [承認済みドメイン] セクションの一覧にあるドメインでホストされている必要があります。」

なんだこりゃあ~。

というわけでまた設定が必要そうです。

いろいろと読み進めていると、有料の(無料でもできるかもしれませんが)サーバーをレンタルなどして、ドメインを取得してドメインを有効化し、ドメイン所有権の証明をする必要があるようです。

というわけで、この数日で、ロリポップのライトプランを契約し、ムームードメインで1年間ドメインを取得しました。

そして、有効なドメインにするために、ドメイン所有権の証明手順というものを踏みました。

ムームードメイン: TXT レコード - G Suite 管理者 ヘルプ

これに従い、ムームードメインで私が持つドメインの設定をGoogleが求める仕様に変更。

https://search.google.com/search-console
このリンクでドメインの承認が確認されるまで、1日程度待つ必要があるとのことで、現在その応答を待ち中です。

↑↑今ココ!!

【参考リンク】
Verify your site ownership - Search Console Help