資格情報のダイアログ(Googleフォーム)は正常に開きましたが、資格情報を入力した後、このエラーが発生します。 こちら の指示に従いました。 Firebaseプロジェクトを作成し、Google APIコンソールからGoogle Drive API(今のところ必要です)を有効にしました。
例外をスローするコード:
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'https://www.googleapis.com/auth/drive',
],
);
await _googleSignIn.signIn();
それがスタックトレースです:
E/flutter ( 5068): [ERROR:flutter/Shell/common/Shell.cc(184)] Dart Error: Unhandled exception:
E/flutter ( 5068): PlatformException(sign_in_failed, com.google.Android.gms.common.api.ApiException: 10: , null)
E/flutter ( 5068): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.Dart:551:7)
E/flutter ( 5068): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.Dart:292:18)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #2 GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.Dart:226:58)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #3 GoogleSignIn._addMethodCall (package:google_sign_in/google_sign_in.Dart:268:20)
E/flutter ( 5068): #4 GoogleSignIn.signIn (package:google_sign_in/google_sign_in.Dart:339:48)
E/flutter ( 5068): #5 ThatsMyComponentState.theSignInFuction.<anonymous closure> (package:my_app/widgets/my_file.Dart:666:45)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #6 _InkResponseState._handleTap (package:flutter/src/material/ink_well.Dart:507:14)
E/flutter ( 5068): #7 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.Dart:562:30)
E/flutter ( 5068): #8 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.Dart:102:24)
E/flutter ( 5068): #9 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.Dart:242:9)
E/flutter ( 5068): #10 TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.Dart:204:7)
E/flutter ( 5068): #11 GestureArenaManager.sweep (package:flutter/src/gestures/arena.Dart:156:27)
E/flutter ( 5068): #12 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.Dart:184:20)
E/flutter ( 5068): #13 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.Dart:158:22)
E/flutter ( 5068): #14 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.Dart:138:7)
E/flutter ( 5068): #15 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.Dart:101:7)
E/flutter ( 5068): #16 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.Dart:85:7)
E/flutter ( 5068): #17 _invoke1 (Dart:ui/hooks.Dart:168:13)
E/flutter ( 5068): #18 _dispatchPointerDataPacket (Dart:ui/hooks.Dart:122:5)
google_sign_in プラグインのバージョンは4.0.0です。
これがflutter doctot -vの出力です。
[√] Flutter (Channel stable, v1.0.0, on Microsoft Windows [Version 10.0.17763.253], locale en-US)
• Flutter version 1.0.0 at C:\src\flutter-0.7.3\flutter
• Framework revision 5391447fae (10 weeks ago), 2018-11-29 19:41:26 -0800
• Engine revision 7375a0f414
• Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)
[√] Android toolchain - develop for Android devices (Android SDK 28.0.3)
• Android SDK at C:\Users\myuser\AppData\Local\Android\Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform Android-28, build-tools 28.0.3
• Android_HOME = C:\Users\myuser\AppData\Local\Android\Sdk
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\Java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
• All Android licenses accepted.
[√] Android Studio (version 3.3)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 32.0.1
• Dart plugin version 182.5124
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
[!] IntelliJ IDEA Community Edition (version 2018.1)
• IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.1.6
X Flutter plugin not installed; this adds Flutter specific functionality.
X Dart plugin not installed; this adds Dart specific functionality.
• For information about installing plugins, see
https://flutter.io/intellij-setup/#installing-the-plugins
[!] VS Code, 64-bit edition (version 1.30.2)
• VS Code at C:\Program Files\Microsoft VS Code
• Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[√] Connected device (1 available)
• Android SDK built for x86 • emulator-5554 • Android-x86 • Android 8.1.0 (API 27) (emulator)
! Doctor found issues in 2 categories.
どんな助けでも大歓迎です。ありがとう!
今、同じ問題に遭遇しました。これは、デバッグで実行していて、FirebaseにSHA
フィンガープリントを登録したない場合に発生する可能性があります。 debug.keystore
を生成してFirebaseのアプリ内に登録することで解決しました。その後、新しいgoogle-services.json
をダウンロードすることを忘れないでください。 this も参照してください。
Editリリースモードで認証を使用できない場合は、以下を試してください。
-SHAリリースキーの証明書のフィンガープリントを追加します。
keytool -list -v \
-alias <your-key-name> -keystore <path-to-production-keystore>
詳細については、こちらのセクション"get release certificate"
https://developers.google.com/Android/guides/client-auth をご覧ください。
それでも認証が機能しない場合は、Playstoreからアプリをダウンロードして、「Google Play機能によるアプリ署名」を有効にしたことが原因である可能性があります。この場合は、Playストアの発行コンソールに移動し、リリース管理の下のアプリ署名に移動します。そこで、Firebaseコンソールに登録するSHA証明書のフィンガープリントが見つかります。
次のソリューションは、flutterプロジェクトで機能します。
ステップ1:SHA1およびSHA256キーを生成します。
ステップ2:SHA1とSHA256の両方をfirebaseに追加します。 (あなたのアプリの設定で)
ステップ3:google-services.jsonをAndroid/appプロジェクトフォルダー内。
ステップ4:端末でコマンドflutter clean
を実行します。
ステップ5:Flutterアプリを実行します。
詳細については、以下をご覧ください。
https://developers.google.com/Android/guides/client-auth
https://firebase.google.com/docs/flutter/setup
パッケージでGoogle Cloud Apiプロジェクトを構成する必要があります。
https://developers.google.com/identity/sign-in/Android/start-integrating#configure_a_project
必ずFirebaseの同じアカウントでログインしてください
cd Android
./gradlew signingReport
またはgradlew signingReport
google-services.json
をダウンロードして置き換えますflutter clean
IOS:
GoogleService-info.plist
をダウンロードして置き換えます「フラッタークリーン」は、FirebaseコンソールでSHA1を登録した後、誰もが欠けている部分です。
Google_sign_inが機能するために必要な追加の手順:
keytool -list -v -keystore ~/key.jks -alias key
を使用します合計で少なくとも6つになる必要がありますSHA credentials:2デバッグキーから、2はGoogle Playリンクから、そしてリリースキーから2。リリースSHA認証情報をFirebaseに追加した後、google-services.jsonファイルを再ダウンロードする必要はありません。
# Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
# GooglePlay Services
-keep class com.google.Android.gms.** { *; }
-dontwarn com.google.Android.gms.**
-keep class com.google.common.** { *; }
-dontwarn com.google.common.**
これはばかげているように見えるかもしれませんが、(過去にFirebaseでの作業の経験を経て)ちょうど今私に起こりました。 私はGoogle認証を有効にしていないことに気づきました。ログインプロンプトが表示される場合があるので、有効にしてください(有効にしていない携帯電話のGoogleユーザーが表示されます)。
このエラーが発生する理由の1つは、GoogleのOAuth同意フォームに記入しなかった場合です。これは、Firebaseに対する新しい変更です。
アプリの同意フォームに記入するために従う必要がある手順は次のとおりです。
これらの手順は私にとってうまくいきました!リンクがまだ存在しない可能性がありますが、この解決策のソースを参照したいと思います here
FirebaseでのGoogleログインの有効化の設定手順がありません。
Googleのログインは、接続されているiOSアプリとウェブアプリで自動的に設定されます。 AndroidアプリにGoogleログインを設定するには、プロジェクト設定で各アプリのSHA1フィンガープリントを追加する必要があります。
✅以下の十分な手順を完了するだけです
project-level setting
に証明書のフィンガープリントを構成します。 証明書の生成方法 。google-service.json
をダウンロードします。flutter clean
を実行しますflutter run
私はこれを修正しようと何年も費やしました。
1。 grade.propertiesを開きます。このファイルは、{{YOUR PROJECT}}/Android/gradle.propertiesにあります。
2。スクリーンショットに示すように、次の引数を「org.gradle.jvmargs」に追加します。
-XX:MaxHeapSize\= 256m -Xmx256m
3。 「gradlew」を右クリックして「ターミナルで開く」に移動しますこのファイルは{{YOUR PROJECT}}/Android/gradlewにあります
4。次のコマンドを入力します。
gradlew signingReport
5。コンパイルが完了するのを待ち、SHAキーが出力されるはずです。
これらのキーを使用して、アプリを https://console.firebase.google.com/ で認証します
SHA-1がシステムでのみ生成されるデバッグキーであることを確認してから、google-services.jsonファイルをダウンロードしてプロジェクトに追加します。
これで解決しました。新しいプロジェクトで小さなリファクタリングを行いました。私は私の古いgoogle-services.json
ファイルですが、間違ったファイルを使用していました。この単純なエラーに気付く前に、私は他のすべてを2日間試しました。
上記のすべてを試しましたが、何もうまくいきませんでした。私の間違いは、ドライブに複数のAndroidスタジオバージョンのフォルダーがあり、firebase設定で間違ったSHA1キーを供給していたことでした。
これは私に役立ちました(SHA1のインポートに問題がありました)
cd .Android iはSHA1キーを使用してコピーし、firebaseに貼り付けました、プロジェクト構成、Androidアプリケーション、SHA証明書
keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass Android -keypass Android
そして、私はもう1つのキーも作成しました:
keytool -genkey -v -keystore debug.keystore -storepass Android -alias androiddebugkeytwo -keypass Android -keyalg RSA -keysize 2048 -validity 10000
これを使用して、もう1つSHA key:
keytool -list -v -keystore debug.keystore -alias androiddebugkeytwo -storepass Android -keypass Android
firebaseプロジェクトにキーをもう1つコピーして貼り付けました。
また、google-services.jsonをダウンロードして、flutterプロジェクト内のAndroid/appに貼り付けました。
これは正しく機能しました、私のpubspec.yml依存関係:
http: ^0.12.0+2
cupertino_icons: ^0.1.2
firebase_auth: ^0.15.1
firebase_analytics: ^5.0.6
firebase_core: ^0.4.2+1
google_sign_in: ^4.0.14
私のコード:
Widget _signInButton() {
return OutlineButton(
splashColor: Colors.grey,
onPressed: () async {
await signInWithGoogle()
.then((FirebaseUser user) => print(user.displayName))
.catchError((e) => print(e));
},
);
}
import 'package:firebase_auth/firebase_auth.Dart';
import 'package:google_sign_in/google_sign_in.Dart';
final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn googleSignIn = new GoogleSignIn();
Future<FirebaseUser> signInWithGoogle() async {
final GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn();
final GoogleSignInAuthentication googleSignInAuthentication =
await googleSignInAccount.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleSignInAuthentication.accessToken,
idToken: googleSignInAuthentication.idToken,
);
final AuthResult authResult = await _auth.signInWithCredential(credential);
final FirebaseUser user = authResult.user;
print(user.displayName.toString());
assert(!user.isAnonymous);
assert(await user.getIdToken() != null);
final FirebaseUser currentUser = await _auth.currentUser();
assert(user.uid == currentUser.uid);
return user;
}
void signOutGoogle() async {
await googleSignIn.signOut();
print("User Sign Out");
}
この作品を期待しています。
Android/app/build.gradleで依存関係をcom.Android.tools.build:gradle:3.1./com.google.gms :google-services:3.2.1 to com.Android.tools.build:gradle:3.2.1/com.google.gms:google-services:4.2.。そしてそれはうまくいった。
これを行うことを確認してください:
FirebaseコンソールからのGoogleサインインを有効にする
Android firebase appのセットアップ時にSHA-1を配置します
アプリをFirebaseに登録するときに、applicationIdを自分のアプリに適したものに変更しました。ただし、これにより、デバッガーを実行したときに2番目のFlutterアプリが電話にインストールされました(もちろん、applicationIdの変更により)。つまり、私の状況でうまくいったのは、インストールとre-install
の両方をremove
することでした。
使用したPCごとにSHA-1およびSHA-256を生成する必要があります。そして、それらすべてをfirebaseプロジェクト設定に追加します。
そして、フォームを OAuth Consent タブに入力する必要があります。
Firebaseコンソールで使用している署名証明書が、開発中のapp/build.gradleファイルのsigningConfigs >>デバッグ構成で使用されているものと同じであることを確認してください。不一致があるとエラーが発生します。
私には問題があり、それを解決するのに5時間かかりました。 API例外10はフィンガープリントに問題があることを意味することをどこかで読んだことを覚えています。したがって、それはキーストアか、firebaseの設定ミスである必要がありました。結局、それはキーストアでした。なぜこれが機能したのかはまだわかりませんが、これは私がやったことですが、ところでWindows 10を使用しています。
1.)ファイルAndroid/build.gradleに以下が含まれていることを確認します。
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.5.1'
classpath 'com.google.gms:google-services:4.2.0'
}
}
2.)次の2行をファイルに追加しましたAndroid/gradle.properties
Android.useAndroidX=true
Android.enableJetifier=true
3.)C:\ Users\YOURUSER\.Androidに移動して、以下を削除します:
debug.keystore
debug.keystore.lock
4.)管理者としてターミナルを開き、このディレクトリにデバッグキーストアを生成します。
$ keytool -genkey -v -keystore debug.keystore -storepass Android -alias androiddebugkey -keypass Android -keyalg RSA -keysize 2048 -validity 10000
指紋を取得しました:
$ keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass Android -keypass Android
5.)SHA1フィンガープリントをFirebaseの構成に追加しました
それは私の終わりでした。誰かのお役に立てば幸いです。
追加したことを確認してください
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
}
android/build.gradleおよび
apply plugin: 'com.google.gms.google-services'
Android/app/build.gradleにあります。また、Android/app/build.gradleのapplicationIdがAndroidManifest.xmlのパッケージ名と同じであることを確認してください(パッケージ名を変更した後でapplicationIdを変更し忘れることがある場合があります) )。このapplicatioonIdまたはマニフェストファイルのパッケージ名は、FirebaseアプリのAndroidパッケージ名の名前にする必要があります。
Appbundleをビルドすると(Google PlayとFlutterで推奨)、このエラーが発生します。 APKをビルドすると、これが解決されます。
問題を参照してください 58194425