[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でサインインできました。
最新記事
すべて表示やりたいこと TextFieldで入力フォームを作りたい。 例えば入力内容が金額の場合、3桁区切りで頭に¥を付けた表記にしたい。 ただしユーザにこれらを入力させるのではなく、ユーザはあくまで数字を入力するだけで、アプリ側で自動でフォーマットしたい。 方法...
現象 やってること iosシミュレータで画像をデバイスのローカルに保存 保存したパスをデータベースに保存 アプリ立ち上げ時にデータベースから画像パスを取得し、そのパスの画像を画面上に表示 起きている現象 iosシミュレータを再起動した場合、上記3で「ファイルパスが見つからな...
やりたいこと 初期値さえ決まればあとは不変な変数がある ただし、コンストラクタ起動時にはまだ決定できない このような変数について late finalで変数を定義 (何らかのタイミングで)初期化されたかどうかをチェックし、されていなければ値を入れる(チェックしないとfina...
Comentários