top of page

[Flutter/dart] firebaseを開発環境と本番環境で分けてgoogle_sign_inを使用する(Android)


概要


firebaseを使用している場合、開発用の環境と本番用の環境を分けたいですよね。

Flutterの場合は基本的にはこの記事を見て設定してもらえばいいのですが、Androidのgoogle_sing_inで躓きました。



詳細


開発用と本番用2つのfirebaseプロジェクトを作成し、デバッグモードで起動します。すると、google_sign_inで以下のエラーが出ます。


Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)


これは、google_sing_inでは(firebaseでは?)アプリケーションid(com.***みたいなやつ)とSHA1フィンガープリントの組み合わせは重複できないためです。

(詳細はここを参照してください。ただし、ここに書いてある対策をしてもエラーは治りませんでした。)



対応案


対応案としては、デバッグモードの時はアプリケーションidを変更しましょう。

/android/app/build.gradleに以下のように記述します。


defaultConfig {
    applicationId "com.xxx.yyy"
    ・・・
}
buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }
    ・・・    
}

また、/android/app/src/debug/google-service.jsonも以下のように修正します。


"client": [
  {
    "client_info": {
      ・・・
      "android_client_info": {
        "package_name": "com.xxx.yyy.debug"
      }
    },

ここを修正しないと

Execution failed for task ':app:processDebugGoogleServices'.

> No matching client found for package name 'com.xxx.yyy

というエラーが出ます。


以上の対策をすると無事googleでサインインできました。

最新記事

すべて表示

現象 アプリ内にAdmobを追加して、アプリを起動すると、下記のエラーが発生 java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider 原因 AndroidManifestの書き方が誤っていた。 <meta-data>はactivityと同じ階層にある必要が

概要 Uriを持っていて、Urlに変換したい場合の方法で少し手惑ったので共有します 方法 String url = uri.toString(); これだけです。 最後に ページを開くだけだとUriでもUrlでもいいんですが、WebViewはUrlを要求してくるんですよね。

問題 以前、日本語を含むURLを開くためには、エンコーディングしてやる必要がある、という記事を書きました。 しかし、すでにエンコーディングされているURLを再度エンコーディングしてしまうと、別のURLになってしまいます。 つまり、URLを開く処理の前に、 ・エンコーディングが必要なURLか ・すでにエンコーディングがされているか を判定しないといけないことになります。これは中々煩雑な処理です。 発

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

「後で読む」を忘れないアプリ ArticleReminder

気になった​Webサイトを登録し、指定時刻にリマインダを送れるアプリです

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png
bottom of page