web-dev-qa-db-ja.com

Flutterおよびgoogle_sign_inプラグイン:PlatformException(sign_in_failed、com.google.Android.gms.common.api.ApiException:10:、null)

資格情報のダイアログ(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.

どんな助けでも大歓迎です。ありがとう!

42

今、同じ問題に遭遇しました。これは、デバッグで実行していて、FirebaseにSHAフィンガープリントを登録したない場合に発生する可能性があります。 debug.keystoreを生成してFirebaseのアプリ内に登録することで解決しました。その後、新しいgoogle-services.jsonをダウンロードすることを忘れないでください。 this も参照してください。

enter image description here

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証明書のフィンガープリントが見つかります。

enter image description here

64
TSR

この問題に遭遇したとき、私はこの投稿で説明されている他のすべての解決策を試しました。これらはどれも機能しませんでした。結局私はそれを理解しました:私の状況では、「サポートメール」を設定しておく必要がありました。

Public Setting Support Email

17
Johan Witters

次のソリューションは、flutterプロジェクトで機能します。

ステップ1:SHA1およびSHA256キーを生成します。
ステップ2:SHA1とSHA256の両方をfirebaseに追加します。 (あなたのアプリの設定で)
ステップ3:google-services.jsonAndroid/appプロジェクトフォルダー内。
ステップ4:端末でコマンドflutter cleanを実行します。
ステップ5:Flutterアプリを実行します。

詳細については、以下をご覧ください。
https://developers.google.com/Android/guides/client-auth
https://firebase.google.com/docs/flutter/setup

13
Rabi Roshan

パッケージでGoogle Cloud Apiプロジェクトを構成する必要があります。

https://developers.google.com/identity/sign-in/Android/start-integrating#configure_a_project

必ずFirebaseの同じアカウントでログインしてください

  1. Firebaseプロジェクトを選択します
  2. Androidを選択します
  3. Flutterプロジェクト内のターミナルを開く
  4. cd Android
  5. ./gradlew signingReportまたはgradlew signingReport
  6. パッケージ名とSHA1キーを貼り付けます
  7. クライアント情報をダウンロード
  8. google-services.jsonをダウンロードして置き換えます
  9. flutter clean

IOS:

  1. Firebaseプロジェクトを選択します
  2. IOSを選択
  3. バンドルIDを入力してください
  4. 信任状をダウンロード
  5. GoogleService-info.plistをダウンロードして置き換えます
10
Matteo Antolini

SHAを追加する必要がないので、 Authentication Googleログイン方法を有効にしていないことに気付きました Firebase console のタブ

Enabling google sign-in method in Firebase console

5
Vidral Bonvi

「フラッタークリーン」は、FirebaseコンソールでSHA1を登録した後、誰もが欠けている部分です。

3
Roger Gusmao

Google_sign_inが機能するために必要な追加の手順:

][2]

  • デバッグ中にGoogleサインインを実行できたが、リリースでは実行できない場合、リリースキーのSHA1とSHA256をFirebaseに追加しなかった可能性が高いです。リリースキーのSHAを取得するには、keytool -list -v -keystore ~/key.jks -alias keyを使用します

console 合計で少なくとも6つになる必要がありますSHA credentials:2デバッグキーから、2はGoogle Playリンクから、そしてリリースキーから2。リリースSHA認証情報をFirebaseに追加した後、google-services.jsonファイルを再ダウンロードする必要はありません。

Firebase

# 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.**
3
function1983

これはばかげているように見えるかもしれませんが、(過去にFirebaseでの作業の経験を経て)ちょうど今私に起こりました。 私はGoogle認証を有効にしていないことに気づきました。ログインプロンプトが表示される場合があるので、有効にしてください(有効にしていない携帯電話のGoogleユーザーが表示されます)。

2
Guy

このエラーが発生する理由の1つは、GoogleのOAuth同意フォームに記入しなかった場合です。これは、Firebaseに対する新しい変更です。

アプリの同意フォームに記入するために従う必要がある手順は次のとおりです。

  1. Google apiコンソール(現在 https://console.developers.google.com )に移動し、firebaseプロジェクトが作成されたアカウントにログインしていることを確認します。
  2. デベロッパーコンソールの左上にある[プロジェクトを選択]プルダウンからプロジェクトを選択します。
  3. 左側のペインで「認証情報」に移動し、「OAuth同意画面」に切り替えます。
  4. 「アプリケーション名」の下にアプリケーションのパブリック名を入力します
  5. 「アプリケーションロゴ」の下に、アプリケーションのローカル画像ファイルをアップロードします
  6. [サポートメール]で、Firebaseアプリケーションにリストされているものと同じサポートメールを入力します。

画面は手順6でこの例のようになります

  1. 下にスクロールして、「アプリケーションホームページリンク」、「アプリケーションプライバシーポリシーリンク」、および「アプリケーション利用規約リンク」にhttp://Firebaseアプリが存在する承認済みドメインの前。

これらの領域を手順7で入力する方法の強調表示された例です

  1. 保存をクリックします

これらの手順は私にとってうまくいきました!リンクがまだ存在しない可能性がありますが、この解決策のソースを参照したいと思います here

2
Ben Elliott

FirebaseでのGoogleログインの有効化の設定手順がありません。

Googleのログインは、接続されているiOSアプリとウェブアプリで自動的に設定されます。 AndroidアプリにGoogleログインを設定するには、プロジェクト設定で各アプリのSHA1フィンガープリントを追加する必要があります。

以下の十分な手順を完了するだけです

  1. Google認証方法を有効にする
  2. 現在のプロジェクトのproject-level setting証明書のフィンガープリントを構成します。 証明書の生成方法
  3. プロジェクトのサポートメールのメールを選択
  4. プロジェクトにgoogle-service.jsonをダウンロードします。
  5. flutter cleanを実行します
  6. 開始flutter run

image

1
Sen Sokha

私はこれを修正しようと何年も費やしました。

1。 grade.propertiesを開きます。このファイルは、{{YOUR PROJECT}}/Android/gradle.propertiesにあります。

enter image description here

2。スクリーンショットに示すように、次の引数を「org.gradle.jvmargs」に追加します。

-XX:MaxHeapSize\= 256m -Xmx256m

enter image description here

3。 「gradlew」を右クリックして「ターミナルで開く」に移動しますこのファイルは{{YOUR PROJECT}}/Android/gradlewにあります

enter image description here

4。次のコマンドを入力します。

gradlew signingReport

5。コンパイルが完了するのを待ち、SHAキーが出力されるはずです。

enter image description here

これらのキーを使用して、アプリを https://console.firebase.google.com/ で認証します

1
KylianMbappe

SHA-1がシステムでのみ生成されるデバッグキーであることを確認してから、google-services.jsonファイルをダウンロードしてプロジェクトに追加します。

1

これで解決しました。新しいプロジェクトで小さなリファクタリングを行いました。私は私の古いgoogle-services.jsonファイルですが、間違ったファイルを使用していました。この単純なエラーに気付く前に、私は他のすべてを2日間試しました。

0
Oprimus

上記のすべてを試しましたが、何もうまくいきませんでした。私の間違いは、ドライブに複数のAndroidスタジオバージョンのフォルダーがあり、firebase設定で間違ったSHA1キーを供給していたことでした。

0
shahana kareen

これは私に役立ちました(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");
}

この作品を期待しています。

0
Pedro Molina

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.。そしてそれはうまくいった。

0

これを行うことを確認してください:

  • FirebaseコンソールからのGoogleサインインを有効にする

  • Android firebase appのセットアップ時にSHA-1を配置します

  • Firebaseプロジェクトを作成したのと同じアカウントでサインインした後、この同意書に記入します https://console.developers.google.com/apis/credentials/consent
0
ikhsanudinhakim

アプリをFirebaseに登録するときに、applicationIdを自分のアプリに適したものに変更しました。ただし、これにより、デバッガーを実行したときに2番目のFlutterアプリが電話にインストールされました(もちろん、applicationIdの変更により)。つまり、私の状況でうまくいったのは、インストールとre-installの両方をremoveすることでした。

0
NielsB95

使用したPCごとにSHA-1およびSHA-256を生成する必要があります。そして、それらすべてをfirebaseプロジェクト設定に追加します。

そして、フォームを OAuth Consent タブに入力する必要があります。

0
gökhan

Firebaseコンソールで使用している署名証明書が、開発中のapp/build.gradleファイルのsigningConfigs >>デバッグ構成で使用されているものと同じであることを確認してください。不一致があるとエラーが発生します。

0
Tonui Nicholus

私には問題があり、それを解決するのに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の構成に追加しました

それは私の終わりでした。誰かのお役に立てば幸いです。

0
Morfinismo

追加したことを確認してください

 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パッケージ名の名前にする必要があります。

0
wicky

Appbundleをビルドすると(Google PlayとFlutterで推奨)、このエラーが発生します。 APKをビルドすると、これが解決されます。

問題を参照してください 58194425

0
Simpler