Plugin Flutter và google_sign_in: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 10:, null)


95

Hộp thoại (biểu mẫu của Google) cho thông tin đăng nhập được mở thành công, nhưng sau khi tôi điền thông tin đăng nhập của mình, tôi gặp lỗi này. Tôi đã làm theo hướng dẫn từ đây . Đã tạo một dự án Firebase, bật API Google Drive (đó là những gì tôi cần bây giờ) từ Bảng điều khiển API của Google.

Mã ném ngoại lệ:

final GoogleSignIn _googleSignIn = GoogleSignIn(
  scopes: [
    'https://www.googleapis.com/auth/drive',
  ],
);

await _googleSignIn.signIn();

Đó là dấu vết ngăn xếp:

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)

Phiên bản của plugin google_sign_in là 4.0.0.

Đó là kết quả đầu ra của flashing 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.

Bất kỳ sự giúp đỡ sẽ được nhiều đánh giá cao. Cảm ơn!


Đối với tất cả: hãy chú ý đến mã ngoại lệ ApiException: 10và tham khảo tài liệu trước tiên - Develop.google.com/android/reference/com/google/android/gms/… Đảm bảo rằng bạn đang khắc phục đúng sự cố. Ví dụ, mã 7 sẽ chỉ có nghĩa là 'không có kết nối internet'.
Kirill Karmazin

Chạy ./gradlew signReport, nó nằm trong thư mục ứng dụng Android. Thêm SHA1 trong cấu hình Google Firebase Đăng nhập bằng Google. Develop.google.com/android/guides/client-auth . Bạn sẽ cần SHA1 cho mỗi máy tính mà bạn làm việc.
live-love

@KirillKarmazin có biết 12500 là gì không? E / flating (23795): [ERROR: flashing / lib / ui / ui_dart_state.cc (157)] Unhandled Exception: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500 :, null)
raiton

Câu trả lời:


146

Tôi gặp phải vấn đề tương tự ngay bây giờ. Điều này có thể xảy ra nếu bạn đang chạy gỡ lỗi và bạn không đăng ký SHAtệp tham chiếu trong firebase. Tôi đã giải quyết nó bằng cách tạo debug.keystorevà đăng ký nó bên trong ứng dụng trên Firebase. Đừng quên tải xuống cái mới google-services.jsonsau đó. Xem thêm điều này .

nhập mô tả hình ảnh ở đây

Chỉnh sửa Nếu bạn không thể sử dụng xác thực trong chế độ phát hành, hãy thử các cách sau:

-Thêm dấu vân tay chứng chỉ SHA của khóa phát hành.

keytool -exportcert -list -v \ -alias <your-key-name> -keystore <path-to-production-keystore>

Để biết thêm chi tiết về điều đó, hãy xem tại đây trong phần "get release certificate" https://developers.google.com/android/guides/client-auth

Nếu xác thực của bạn vẫn không hoạt động, có thể là do bạn đã tải xuống ứng dụng từ Playstore và bạn đã bật "Tính năng ký ứng dụng của Google Play" Sau đó, đối với trường hợp này, hãy chuyển đến bảng điều khiển xuất bản cửa hàng chơi và chuyển đến ký ứng dụng trong phần quản lý phát hành. Ở đó, bạn sẽ tìm thấy tệp tham chiếu chứng chỉ SHA để đăng ký trong bảng điều khiển Firebase.

nhập mô tả hình ảnh ở đây


18
Cám ơn vì cái này. Điều này đã giúp. Đáng chú ý là cả hai SHA1 và các phím SHA256 phải được bổ sung cho auth để làm việc
Srini

2
Chấp nhận đây là câu trả lời.
Muruganandham K

@TSR điều này hoạt động nhưng tôi không phải tải xuống google-services.json mới.
Darren Cole

2
FYI, tôi đã gặp lỗi tương tự ngay cả sau khi định cấu hình dấu vân tay sha của mình. Hóa ra tôi cũng phải thêm địa chỉ email hỗ trợ theo github.com/flutter/flutter/issues/25909#issuecomment-497378619 .
Michael Nelson

@MichaelNelson, đây cũng là vấn đề của tôi
wwwwwwwwwwww

38

Giải pháp sau hoạt động trong dự án Flagship:

Bước 1: Tạo khóa SHA1SHA256 .
Bước 2: Thêm cả SHA1 và SHA256 vào firebase. (trong cài đặt ứng dụng của bạn)
Bước 3: Tải google-services.json xuống android / app trong thư mục dự án của bạn.
Bước 4: Trong thiết bị đầu cuối của bạn, chạy lệnh flutter clean.
Bước 5: Chạy ứng dụng rung của bạn.

Để biết thêm thông tin, hãy truy cập:
https://developers.google.com/android/guides/client-auth
https://firebase.google.com/docs/flutter/setup


8
sạch sẽ là rất quan trọng
mkkhedawat

25

Khi tôi gặp sự cố này, tôi đã thử tất cả các giải pháp khác được mô tả trong bài đăng này. Không ai trong số này hoạt động. Cuối cùng, tôi đã tìm ra: Trong tình huống của tôi, tôi phải đảm bảo đặt "email hỗ trợ" của mình.

Email hỗ trợ cài đặt công khai


22

Bạn cần định cấu hình dự án Google Cloud Api với gói của mình.

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

Đảm bảo đăng nhập bằng cùng một tài khoản Firebase

  1. Chọn dự án firebase của bạn
  2. Chọn Android
  3. Mở thiết bị đầu cuối bên trong dự án rung động của bạn
  4. cd android
  5. ./gradlew signingReport hoặc là gradlew signingReport
  6. Dán tên gói và khóa SHA1 của bạn
  7. Tải xuống thông tin khách hàng
  8. Tải xuống và thay thế google-services.json
  9. flutter clean

IOS:

  1. Chọn dự án Firebase của bạn
  2. Chọn IOS
  3. Nhập ID gói của bạn
  4. Tải xuống các chứng chỉ
  5. Tải xuống và thay thế GoogleService-info.plist

2
gradlew signReport giúp tôi rất nhiều, bởi vì lần đầu tiên tôi sử dụng kho khóa sai. Và với lệnh đó, bạn chắc chắn sẽ chọn đúng.
BHuelse

17

Tôi đã dành nhiều thời gian để cố gắng sửa chữa điều này.

1. Mở grade.properties Tệp này được tìm thấy trong: {{YOUR PROJECT}} / android / gradle.properties

nhập mô tả hình ảnh ở đây

2. Thêm đối số sau vào 'org.gradle.jvmargs' như trong ảnh chụp màn hình.

-XX: MaxHeapSize = 256m -Xmx256m

nhập mô tả hình ảnh ở đây

3. Nhấp chuột phải vào 'gradlew' và chuyển đến 'Open in Terminal' Tệp này được tìm thấy trong {{YOUR PROJECT}} / android / gradlew

nhập mô tả hình ảnh ở đây

4. Nhập lệnh sau.

gradlew signingReport

Nếu không hoạt động, đầu tiên hãy thử lệnh thứ hai:

./gradlew signingReport

5. Chờ quá trình biên dịch hoàn tất và khóa SHA của bạn sẽ được in ra cho bạn.

nhập mô tả hình ảnh ở đây

Sử dụng các phím này để xác thực ứng dụng của bạn trong https://console.firebase.google.com/


1
Đối với tôi đó là thứ duy nhất hoạt động, keytool của tôi tạo ra không hoạt động SHA-1 / SHA-256
PRO GRAMMER

4
Nếu bước 4 không hoạt động, hãy gọi gradlew như thế này thay thế: ./gradlew signReport
Tincho825

1
Nói đây cũng là điều duy nhất phù hợp với tôi. Đã thử mọi thứ khác và dành nhiều ngày để cố gắng giải quyết vấn đề trước khi tìm ra điều này.
Mark Rawlingson

Gặp lỗi này: Không thể khởi chạy lớp org.codehaus.groovy.runtime.InvokerHelper
Ramis

đây là phương pháp dễ nhất! điều này nên được chấp nhận.
Reverie_ss

11

Đối với tôi, tôi không cần thêm SHA bổ sung, tôi nhận ra rằng tôi đã không bật phương thức Đăng nhập bằng Google trong tab Xác thực trong bảng điều khiển Firebase

Bật phương thức đăng nhập google trong bảng điều khiển Firebase


7

Các bước bổ sung bạn có thể phải thực hiện để google_sign_in hoạt động:

] [2]

  • Nếu bạn có thể chạy Đăng nhập bằng Google trong khi gỡ lỗi nhưng KHÔNG được phát hành, thì rất có thể bạn đã không thêm SHA1 và SHA256 của khóa phát hành vào firebase. Để nhận SHA của khóa phát hành, hãy sử dụngkeytool -list -v -keystore ~/key.jks -alias key

bàn điều khiển Bạn phải có tổng cộng ít nhất 6 thông tin đăng nhập SHA : 2 từ khóa gỡ lỗi, 2 từ liên kết Google Play và 2 từ khóa phát hành. Lưu ý rằng bạn không cần tải lại tệp google-services.json sau khi thêm thông tin đăng nhập SHA phát hành vào firebase.

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.**

7

Bạn đã bỏ lỡ bước cấu hình cho phép đăng nhập google trên firebase.

Đăng nhập bằng Google được định cấu hình tự động trên ứng dụng web và iOS được kết nối của bạn. Để thiết lập đăng nhập Google cho các ứng dụng Android của bạn, bạn cần thêm vân tay SHA1 cho từng ứng dụng trên Cài đặt dự án của mình.

Chỉ cần hoàn thành đủ các bước dưới đây

  1. Bật phương pháp xác thực của Google
  2. Định cấu hình dấu vân tay chứng chỉ trong dự án hiện tại của bạn tạiproject-level setting . Cách tạo chứng chỉ .
  3. Chọn email cho email hỗ trợ Dự án
  4. Tải xuống google-service.jsondự án của bạn.
  5. Chạy flutter clean
  6. khởi đầu flutter run

hình ảnh


6

"Flutter clean" là mảnh ghép mà mọi người còn thiếu sau khi đăng ký SHA1 trong Firebase Console!


3

Một lý do mà bạn có thể gặp phải lỗi này là nếu bạn không điền vào biểu mẫu chấp thuận OAuth của google. Đây là một thay đổi mới đối với Firebase.

Dưới đây là các bước bạn cần làm theo để điền vào biểu mẫu đồng ý cho ứng dụng của mình:

  1. Điều hướng đến bảng điều khiển api của google (hiện tại https://console.developers.google.com ), đảm bảo rằng bạn đã đăng nhập vào tài khoản mà dự án firebase của bạn được tạo.
  2. Chọn dự án của bạn từ menu thả xuống "chọn dự án" ở trên cùng bên trái của bảng điều khiển dành cho nhà phát triển.
  3. Trong ngăn bên trái, hãy chuyển đến "thông tin đăng nhập" và sau đó chuyển sang "màn hình chấp thuận OAuth".
  4. Trong "Tên ứng dụng", hãy nhập tên công khai của ứng dụng của bạn
  5. Trong "Biểu trưng ứng dụng" tải lên tệp hình ảnh cục bộ của ứng dụng của bạn
  6. Trong "Email hỗ trợ", hãy nhập cùng một email hỗ trợ được liệt kê trong ứng dụng firebase của bạn.

Màn hình của bạn bây giờ sẽ giống như ví dụ này theo bước 6

  1. Cuộn xuống và điền vào "Liên kết Trang chủ Ứng dụng", "Liên kết Chính sách Bảo mật Ứng dụng" và "Liên kết Điều khoản Dịch vụ Ứng dụng" bằng cách thêm http: // trước miền được ủy quyền mà ứng dụng firebase của bạn tồn tại.

Dưới đây là một ví dụ được đánh dấu về cách các vùng này nên được điền trong bước 7

  1. Nhấp vào để lưu

Các bước này đã làm việc cho tôi! Mặc dù liên kết có thể không tồn tại, nhưng tôi muốn tham khảo nguồn của giải pháp này tại đây


Nó thực sự là một câu trả lời cho câu hỏi?
Bulat

Cảm ơn bạn đã phản hồi. Tôi đã cố gắng cập nhật câu trả lời của mình để cụ thể hơn - vui lòng cho tôi biết bây giờ nó có phù hợp không - và nếu không, tôi có thể cải thiện nó như thế nào.
Ben Elliott

1
Bạn cần "Gửi để xác minh" hay chỉ cần "Lưu"?
Đơn giản hơn,

3

Đối với ngoại lệ nền tảng 10, hãy thử điều này:

  1. Tạo vân tay SHA1 mới trên máy của bạn,
  2. Chuyển đến cài đặt ứng dụng android firebase của bạn trong Firebase Console
  3. Nhấp vào thêm dấu vân tay mới trong cài đặt ứng dụng Android của bạn
  4. Dán vân tay SHA1 mới vào trường
  5. Tạo tệp cấu hình json mới
  6. Thay thế tệp cấu hình trong thư mục android
  7. Chạy sạch sẽ
  8. Chạy dự án của bạn

2

Điều này có vẻ ngớ ngẩn, nhưng điều đó chỉ xảy ra với tôi bây giờ (sau khi có một số kinh nghiệm làm việc với firebase trong quá khứ). Tôi nhận thấy rằng tôi đã không bật xác thực của Google. Hãy đảm bảo rằng bạn làm điều đó, vì bạn vẫn có thể thấy lời nhắc đăng nhập (hiển thị cho bạn những người dùng google trên điện thoại của bạn mà không cần bật nó).


Tôi có thể kích hoạt nó ở đâu?
Ahmed Albarody

@AhmedAlbarody Trong bảng điều khiển firebase của bạn - chọn xác thực và sau đó bạn cần kích hoạt các dịch vụ bạn muốn sử dụng.
Guy

1

Đảm bảo SHA-1 phải là khóa gỡ lỗi chỉ được tạo trong hệ thống của bạn, sau đó tải xuống tệp google-services.json nối tệp đó vào dự án của bạn


1

đảm bảo rằng bạn đã thêm

 dependencies {
    classpath 'com.google.gms:google-services:4.2.0'
}

trong android / build.gradle và

apply plugin: 'com.google.gms.google-services'

trong android / app / build.gradle . Ngoài ra, hãy đảm bảo applicationId trong android / app / build.gradle giống với tên gói của bạn trong AndroidManifest.xml (Đôi khi bạn có thể quên thay đổi applicationId sau khi thay đổi tên gói). Ứng dụng này hoặc tên gói trong tệp kê khai phải là tên của tên gói android của bạn trong ứng dụng firebase.


1

Bạn nên tạo SHA-1 và SHA-256 cho mỗi máy tính mà bạn đã sử dụng. Và thêm tất cả chúng vào cài đặt dự án firebase.

Và bạn nên điền vào biểu mẫu trong tab Đồng ý OAuth .


1

Nếu trước đây nó hoạt động nhưng bây giờ đang sử dụng một PC khác, bạn sẽ cần thêm các vân tay SHA-1 / SHA-256 mới do PC đó tạo vào dự án của bạn trong Firebase . Một ví dụ từng bước tốt để làm điều đó: https://stackoverflow.com/a/56091158/5365164


1

Trong trường hợp của tôi, đó là một sai lầm ngớ ngẩn, hãy đảm bảo rằng applicationId của bạn trong firebase như: 'com.example.appname' khớp chính xác với applicationId trong tệp app / src / build.gradle của bạn, trong defaultConfig {}. Không có lỗi chính tả , không có xung đột chữ hoa, chữ thường. Trong trường hợp của tôi, một chữ cái là chữ hoa gây ra tất cả các vấn đề.


0

Trong android / app / build.gradle, tôi đã thay đổi các phần phụ thuộc từ com.android.tools.build:gradle:3.1.3 / com.google.gms: google-services: 3.2.1 thành com.android.tools.build:gradle : 3.2.1 / com.google.gms: google-services: 4.2.0 . Va no đa hoạt động.


0

Trong khi đăng ký ứng dụng trong Firebase, tôi đã thay đổi applicationId của mình thành thứ gì đó phù hợp với ứng dụng của tôi. Tuy nhiên, điều này dẫn đến một ứng dụng Flutter thứ hai được cài đặt trên điện thoại của tôi khi tôi chạy trình gỡ lỗi (Tất nhiên, do sự thay đổi trong applicationId). Vì vậy, điều phù hợp với tình huống của tôi, là removecả cài đặt và re-installứng dụng.


0

Tôi đã thử mọi thứ ở trên và không có gì hiệu quả. Lỗi của tôi là tôi có nhiều thư mục phiên bản studio android trong ổ đĩa của mình và tôi đã cấp sai khóa SHA1 trong cài đặt firebase.


0

Việc xây dựng một nhóm ứng dụng (được Google Play và Flutter khuyến nghị) sẽ gây ra lỗi này. Xây dựng một apk sẽ giải quyết điều này.

Xem sự cố 58194425


0

Tôi đã gặp sự cố và mất 5 giờ để giải quyết. Tôi nhớ tôi đã đọc ở đâu đó rằng API Exception 10 có nghĩa là có vấn đề với dấu vân tay. Vì vậy, nó phải là kho khóa hoặc cấu hình sai trong firebase. Cuối cùng, nó là kho khóa. Tôi vẫn không chắc tại sao điều này lại hoạt động nhưng đây là những gì tôi đã làm, nhân tiện, tôi đang sử dụng Windows 10:

1.) Đảm bảo rằng trên tệp android / build.gradle tôi đã có những thứ sau:

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.1'
        classpath 'com.google.gms:google-services:4.2.0'
    }
}

2.) Tôi đã thêm hai dòng này vào tệp android / gradle.properties

android.useAndroidX=true
android.enableJetifier=true

3.) Điều hướng đến C: \ Users \ YOURUSER \ .android và xóa phần sau:

debug.keystore
debug.keystore.lock

4.) Mở thiết bị đầu cuối với tư cách là quản trị viên và tạo kho khóa gỡ lỗi trong thư mục này.

$ keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000

Lấy dấu vân tay:

$ keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android 

5.) Đã thêm dấu vân tay SHA1 vào cấu hình trong firebase

Đó là kết thúc của tôi. Tôi hi vọng nó giúp ích cho ai đó.


0

Hãy đảm bảo rằng chứng chỉ ký mà bạn đang sử dụng trên bảng điều khiển firebase giống với những gì được sử dụng trong cấu hình signConfigs >> gỡ lỗi trong tệp app / build.gradle khi vẫn đang được phát triển. Missmatch gây ra lỗi.


0

CÁi này đã sửa nó giúp tôi. Tôi đã thực hiện một tái cấu trúc nhỏ trong một dự án mới. Tôi nghĩ rằng tôi đang sử dụng google-services.jsontệp cũ của mình nhưng tôi đã sử dụng tệp sai. Tôi đã thử mọi thứ khác trong hai ngày trước khi nhận ra lỗi đơn giản này.


0

Điều này đã được giúp đỡ cho tôi (là một vấn đề khi nhập SHA1)

cd .android tôi đã sử dụng và sao chép khóa SHA1 và dán vào firebase, cấu hình dự án, ứng dụng android, chứng chỉ SHA

keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android

và tôi cũng đã tạo thêm một khóa với:

keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkeytwo -keypass android -keyalg RSA -keysize 2048 -validity 10000

và sử dụng điều này để lấy thêm một khóa SHA:

keytool -list -v -keystore debug.keystore -alias androiddebugkeytwo -storepass android -keypass android

tôi đã sao chép và dán thêm một khóa nữa trong dự án firebase của mình.

cũng đã tải xuống google-services.json và dán vào Android / app bên trong dự án Flagship.

Điều này hoạt động bình thường, pubspec.yml của tôi thiếu sót:

  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

mã của tôi:

    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");
}

Tôi hy vọng điều này làm việc.


0

Hãy chắc chắn rằng bạn làm điều này:

  • Bật đăng nhập google từ bảng điều khiển firebase của bạn

  • Đặt SHA-1 của bạn khi thiết lập ứng dụng firebase android của bạn

  • Sau khi đăng nhập bằng chính tài khoản mà bạn đã tạo dự án Firebase, bạn đã điền vào biểu tượng này https://console.developers.google.com/apis/credentials/consent

0

Tôi gặp lỗi này: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 7 null) Có thể giải pháp tốt cho bạn.

Và tôi nhận ra thiết bị gỡ lỗi của mình (chế độ gỡ lỗi android) không được kết nối với internet. Tôi nghĩ rằng xác thực không thành công vì vậy phương thức trả về null hoặc người dùng bằng null.

Biến trả về phải kiểm tra trước khi sử dụng.


Tôi cảm thấy khó khăn khi làm theo câu trả lời của bạn: bạn có thể nhận trợ giúp về việc sử dụng tiếng Anh (không phải ngôn ngữ thứ nhất của tôi ) không?
greybeard

0

Trong trường hợp của tôi, không có câu trả lời nào giải quyết được vấn đề. Sau một hồi suy nghĩ, tôi nhận ra rằng cách đây không lâu tôi đã thay đổi tên gói ứng dụng của mình . Nếu đó là trường hợp của bạn, bạn chỉ cần tạo một ứng dụng khác bên trong dự án Firebase với tên gói mới và tải xuống lại tệp google-services.json.


0

Tuy nhiên, các câu trả lời được đưa ra ở trên là đúng, tuy nhiên, nếu bạn đang gặp sự cố thì đừng quên xác minh phần SignConfig {} của app / build.gradle. Nó không được có bất kỳ tham chiếu tệp kho khóa không mong muốn nào, điều này có thể gây ra sự không khớp với google-services.json và kho khóa.


0

Nếu ứng dụng đã phát hành của bạn không hoạt động bình thường và bạn đang sử dụng Google Play Signing, hãy sao chép SHA từ tài khoản cửa hàng play của bạn, SHA từ khóa cục bộ của bạn sẽ không hoạt động nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.