Đăng nhập Google lỗi 12500


106

Tôi đang cố gắng tích hợp Đăng nhập bằng Google vào ứng dụng của mình. Tôi không có máy chủ back-end, tôi chỉ nhận thông tin chi tiết về Tài khoản Google đã đăng nhập vào ứng dụng của mình.

Lần đầu tiên tôi đã thử bằng cách sử dụng Ví dụ đăng nhập của Google nhưng tôi gặp lỗi (Không có thay đổi mã nào được thực hiện ngoại trừ việc in stacktrace bên dưới). Tôi vừa sử dụng SignInActivity ví dụ vì tôi không có máy chủ back-end.

 Exception com.google.android.gms.common.api.ApiException: 12500: 
 at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
 at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89)     at android.app.Activity.dispatchActivityResult(Activity.java:7010)
 at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
 at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
 at android.app.ActivityThread.-wrap20(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6316)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

 public class SignInActivity extends AppCompatActivity implements
         View.OnClickListener {

     private static final String TAG = "SignInActivity";
     private static final int RC_SIGN_IN = 9001;

     private GoogleSignInClient mGoogleSignInClient;
     private TextView mStatusTextView;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Views
         mStatusTextView = findViewById(R.id.status);

         // Button listeners
         findViewById(R.id.sign_in_button).setOnClickListener(this);
         findViewById(R.id.sign_out_button).setOnClickListener(this);
         findViewById(R.id.disconnect_button).setOnClickListener(this);

         // [START configure_signin]
         // Configure sign-in to request the user's ID, email address, and basic
         // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                 .requestEmail()
                 .build();
         // [END configure_signin]

         // [START build_client]
         // Build a GoogleSignInClient with the options specified by gso.
         mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
         // [END build_client]

         // [START customize_button]
         // Set the dimensions of the sign-in button.
         SignInButton signInButton = findViewById(R.id.sign_in_button);
         signInButton.setSize(SignInButton.SIZE_STANDARD);
         signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
         // [END customize_button]
     }

     @Override
     public void onStart() {
         super.onStart();

         // [START on_start_sign_in]
         // Check for existing Google Sign In account, if the user is already signed in
         // the GoogleSignInAccount will be non-null.
         GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
         updateUI(account);
         // [END on_start_sign_in]
     }

     // [START onActivityResult]
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

         // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
         if (requestCode == RC_SIGN_IN) {
             // The Task returned from this call is always completed, no need to attach
             // a listener.
             Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
             handleSignInResult(task);
         }
     }
     // [END onActivityResult]

     // [START handleSignInResult]
     private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
         try {
             GoogleSignInAccount account = completedTask.getResult(ApiException.class);

             // Signed in successfully, show authenticated UI.
             updateUI(account);
         } catch (ApiException e) {
             // The ApiException status code indicates the detailed failure reason.
             // Please refer to the GoogleSignInStatusCodes class reference for more information.
             Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
             e.printStackTrace();
             updateUI(null);
         }
     }
     // [END handleSignInResult]

     // [START signIn]
     private void signIn() {
         Intent signInIntent = mGoogleSignInClient.getSignInIntent();
         startActivityForResult(signInIntent, RC_SIGN_IN);
     }
     // [END signIn]

     // [START signOut]
     private void signOut() {
         mGoogleSignInClient.signOut()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END signOut]

     // [START revokeAccess]
     private void revokeAccess() {
         mGoogleSignInClient.revokeAccess()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END revokeAccess]

     private void updateUI(@Nullable GoogleSignInAccount account) {
         if (account != null) {
             mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));

             findViewById(R.id.sign_in_button).setVisibility(View.GONE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
         } else {
             mStatusTextView.setText(R.string.signed_out);

             findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
         }
     }

     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.sign_in_button:
                 signIn();
                 break;
             case R.id.sign_out_button:
                 signOut();
                 break;
             case R.id.disconnect_button:
                 revokeAccess();
                 break;
         }
     }
  }

Theo những gì tôi đọc, vấn đề có thể do SHA1 Generation gây ra .

Tôi đã làm theo hướng dẫn đầy đủ nhưng dường như nó không hoạt động.

Tôi đã sao chép SHA1 từ ký hiệu gradle

Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047

những gì có thể là nguyên nhân có thể của điều này?

Cảm ơn

PS Đây có thể là một nguyên nhân có thể?

Google Play services out of date.  Requires 11720000 but found 10932470

Này, bạn có thể vui lòng đăng mã của bạn
Dilip

Xin chào @Dilip Tôi thực sự đã sử dụng cái này :) github.com/googlesamples/google-services/tree/master/android/… . Vẫn cập nhật nó
Aaron

1
Vì vậy, điều gì xảy ra bạn gặp lỗi tương tự hoặc bất kỳ điều gì khác xảy ra. Một điều vui lòng tạo SHA1 một lần nữa theo cách thủ công và đặt ở bảng điều khiển dành cho nhà phát triển đối với APP của bạn và kiểm tra chéo tên gói và tải xuống tệp google-services.json và đặt ở cấp ứng dụng.
Dilip

Có @Dilip Tôi gặp lỗi tương tự. Tôi đã vượt qua tên gói đã kiểm tra. Tôi thậm chí đã thử sử dụng một kho khóa khác nhưng kết quả vẫn vậy.
Aaron

Bạn cần thực hiện thay đổi mã để nhận khóa API của mình . Và có, bạn nên cập nhật các dịch vụ chơi
OneCricketeer

Câu trả lời:


37

Chỉ cần cập nhật Dịch vụ Google Play của bạn lên phiên bản mới nhất (hoặc 11720000 trong trường hợp này). Nếu bạn đang sử dụng AVD, hình ảnh Nexus 5 và 5X hỗ trợ Google Play. Sau khi trình giả lập hoạt động, hãy chuyển đến Menu điều khiển mở rộng> Google Play rồi cập nhật.


Làm thế nào để làm điều đó trên các thiết bị Samsung?
Pinkesh Darji

7
Đây không phải là vấn đề trong trường hợp của tôi. Các dịch vụ của Google Play đã được cập nhật.
Adam Hurwitz

Giải pháp của @ zub0r về liên kết dự án và quyền riêng tư nên được chấp nhận là câu trả lời chính xác.
Adam Hurwitz

Vui lòng ở đâu menu điều khiển mở rộng, trên trình giả lập hoặc trên studio trực quan?
George Udosen

121

Lỗi PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, null)

Lỗi 12500 này có thể được giải quyết bằng cách thêm địa chỉ email hỗ trợ vào dự án của bạn trong cài đặt dự án. Mở liên kết https://console.firebase.google.com/

Chọn Dự án của bạn và mở tab cài đặt.

Cung cấp một email hỗ trợ hợp lệ và khởi động lại ứng dụng của bạn ngay bây giờ.

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


9
Cảm ơn anh bạn! Lỗi này khá khó hiểu, nó có thể có nghĩa là bất kỳ nội dung nào được đề cập trong câu trả lời ở đây. Vấn đề của tôi là cái này :(
Billda

3
Tôi đã thực hiện mọi thứ được đề cập trong bảng điều khiển dành cho nhà phát triển Develop.google.com/identity/sign-in/android/sign-in và sau một ngày cố gắng đặt dấu vân tay SHA-1 và tất cả những điều này là sự cố. Bạn đã giúp. Cảm ơn rất nhiều!
lớp Android

Thử thêm chìa khóa SHA1 cho @RohitSingh dự án của bạn
Maddu Swaroop

1
@MadduSwaroop Giá như có cách nào để upvote hai lần ... cảm ơn ạ
Lefty

1
Bạn đã cứu một ngày của tôi
Houssem

46

Kiểm tra xem dấu vân tay SHA-1 có được thêm vào cài đặt dự án firebase hay không. Nếu không, hãy tìm vân tay SHA-1 bằng

https://developers.google.com/android/guides/client-auth

Ngoài ra, tìm dấu vân tay SHA-1 của khóa phát hành bằng cách sử dụng

keytool -list -v -keystore <keystore path>

Loại bỏ <keystore path>bằng đường dẫn của kho khóa.

Sau đó, thêm cả hai dấu vân tay SHA-1 vào cài đặt dự án firebase.

NB: Đừng quên thay thế google-services.json bằng google-services.json được cập nhật bằng dấu vân tay mới. Tôi đã mất hai ngày về điều đó.

Trong khi gỡ lỗi

Android studio tự động tạo ~/.android/debug.keystore trên bản dựng gỡ lỗi đầu tiên và sử dụng nó để ký ứng dụng.

Để chạy SHA-1 (mật khẩu android) ( doc ):

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Điều này SHA-1sẽ được thêm vào cài đặt ứng dụng tại firebaseđể cho phép sử dụng khả năng đăng nhập của google trong khi thử nghiệm bản dựng gỡ lỗi.


2
Làm thế nào để bạn chắc chắn rằng anh ấy đang sử dụng Firebase?
PaulG

Đoán nó (tương tự về mã và không có máy chủ). Dự án Firebase cũng được kết nối với bảng điều khiển GCP. Chúng tôi cũng có thể thay đổi dấu vân tay trong bằng chứng xác thực GCP.
Niyas Nazar,

cùng một lỗi với, nhưng trong trường hợp của tôi, nó không liên quan đến firebase (tôi không sử dụng nó).
Majed DH

Tới console.developers.google.com/apis/credentials .Add chứng mới (O Auth Client) với phím SHA. (Firebase tự động thực hiện việc này cho các dự án firebase của chúng tôi)
Niyas Nazar

Tệp google-services.json có thể được tìm thấy trong thư mục ứng dụng bên trong dự án của bạn. (Đi qua Finder / File Explorer)
Mehul Tandale

43

 đối với lỗi 12500 Bạn cần thêm gmail hỗ trợ chỉ trong cài đặt của firebase và đối với lỗi 10, hãy thêm tệp tham chiếu ssh trong bảng điều khiển firebase như bạn thấy trong hình


câu trả lời hay và thẳng thắn, Chỉ cần định cấu hình tài khoản gmail của tôi và làm phần còn lại
Ajeett

43

Email hỗ trợ và tất cả các liên kết dự án và quyền riêng tư đều cần thiết để Google SignIn hoạt động, nếu không, nó sẽ ném 12500.

Đặt nó trên https://console.developers.google.com/apis/credentials ở cuối tab thứ hai có tên "Màn hình chấp thuận OAuth" - ở đó bạn sẽ tìm thấy ba liên kết cần được định cấu hình.

Điều này không được đề cập BẤT CỨ Ở ĐÂU trong hướng dẫn Firebase.


3
Cảm ơn, nó đang làm việc cho tôi. Tôi đã lãng phí gần như toàn bộ ngày để giải quyết vấn đề
Krishan Kumar Sharma

2
Cảm ơn, tôi vừa thêm một trong những 'miền được ủy quyền' vào các liên kết bảo mật và mọi thứ đều hoạt động. Bạn đã cứu tôi một số giờ thử và sai 💌
Coco

Điều này nên được chấp nhận câu trả lời. Tôi đã vật lộn với điều đó 2 ngày, mà không có bất kỳ thành công. Google sẽ cập nhật hướng dẫn, bây giờ tài liệu của họ được gây hiểu lầm, hướng dẫn của họ sẽ không bao giờ làm việc và mã lỗi nói gì
user1209216

1
nơi để thêm liên kết bảo mật?
Shihab Uddin

4
Trên tab thứ hai có tên là "màn hình có sự đồng ý OAuth" - trên dưới cùng của hình thức bạn đã có ba liên kết
zub0r

21

Thử cập nhật màn hình chấp thuận OAuth trên https://console.developers.google.com/apis/credentials


3
Tôi đã phải thêm email hỗ trợ và sau đó nó bắt đầu hoạt động. Điều này đã được rung động.
adarsh

Ngoài ra, tất cả các liên kết dự án và quyền riêng tư là cần thiết, nếu không, nó ném 12500. Điều này không được đề cập ở bất cứ đâu.
zub0r

Liên kết @ zub0r là không cần thiết. Nguồn: Tôi chỉ làm điều đó mà không có họ.
easycheese 24-07-19

18

Tôi đã bị mắc kẹt về điều này trong một thời gian.

Đảm bảo rằng các bước này được thực hiện-

  • Khóa SHA chính xác được lưu trên Bảng điều khiển Firebase.
  • Tải xuống google-service.json mới nhất
  • Và Cuối cùng và quan trọng nhất Lưu sự đồng ý của OAuth dưới thông tin đăng nhập trong google api, Màn hình OAuth Điều này mất nhiều thời gian để tìm ra. Và nó đã hoạt động tốt sau đó.

6
tốt. đây sẽ là câu trả lời được chấp nhận cho năm 2019 ở đây. google lạ "phải" cập nhật các nội dung bên trong OAuth Chấp thuận
mochadwi

1
Ugh, một phiếu bầu khác cho điều này. Hoàn toàn là vấn đề khó hiểu của tôi.
easycheese 24-07-19

12

Có vẻ như SHA1 của bạn đã bị Google play store ghi đè. Kiểm tra cửa hàng google play của bạn, bảng điều khiển khởi chạy, trong ký ứng dụng, xem google play có thêm SHA1 bổ sung hay không.

Và sao chép SHA1 đó, thêm vào vị trí liên quan của bạn, sẽ thực hiện công việc.


1
Ôi chúa ơi! Cảm ơn vì món tiền boa này! App Bundles đã tạo SHA1 của riêng mình, vì vậy, các khóa phát hành được sử dụng cục bộ (khi tạo APK) không còn là khóa chính xác nữa.
Jia Tse

Đây là quy trình làm việc khó hiểu nhất từ ​​trước đến nay. Nhưng thanks for the tip
DarkNeuron

5

Nếu vẫn còn bất kỳ ai gặp vấn đề tương tự, nếu bạn đang thêm phạm vi tùy chỉnh, hãy đảm bảo đó là phạm vi hợp lệ. Trong trường hợp của tôi, tôi đã trộn phạm vi Facebook với phạm vi Google và tôi đã mất một thời gian để tìm ra nó!


5

Tôi đang sử dụng Xác thực Firebase. SHA-1 của tôi được chỉ định chính xác, id khách hàng cũng đúng nhưng tôi vẫn nhận được 12500.

Hóa ra vấn đề của tôi là tôi không chỉ ra email Hỗ trợ trong cài đặt dự án của mình. (Cài đặt -> tab Chung -> Phần dự án của bạn (Cài đặt công khai)).


3
Điều tương tự cũng xảy ra với tôi. Có vấn đề nghiêm trọng về tài liệu với các dịch vụ của google. Tôi ước họ ghi lại các vấn đề như vậy hoặc ít nhất là hiển thị lỗi thân thiện với người dùng.
ashish-goel

4

Đi tới dự án của bạn trong bảng điều khiển Firebase, mở Cài đặt dự án, thêm tệp tham chiếu chứng chỉ SHA của bạn vào đó. Tải xuống tệp google-services.json đã cập nhật và thêm nó vào thư mục ứng dụng Dự án của bạn.

Điều này đã làm việc cho tôi.

Ảnh chụp màn hình bảng điều khiển Firebase


3

Tôi nghĩ lỗi đến từ SHA1 Sai. Xin đừng quên rằng SHA1 khác nhau giữa chế độ phát hành và gỡ lỗi trong studio android. Thay vì sử dụng keytool để lấy SHA1, bạn có thể sử dụng dự án Gradle -> Task -> android -> signReport trong android studio (có thể mở bằng menu View -> Toolwindow -> gradle) để phát hành và gỡ lỗi SHA1. Sau đó, để dễ thao tác, bạn cần tạo 2 thông tin xác thực riêng biệt với hai SHA1 trên google cloud console (google chỉ hướng dẫn tạo 1 bằng cách sử dụng SHA1 release, khi chúng ta phát triển nó sẽ không hoạt động vì nó sử dụng SHA1 debug).


3

Trước tiên, hãy đảm bảo rằng bạn đã đăng ký ứng dụng của mình trong bảng điều khiển dành cho nhà phát triển của Google

Đảm bảo bạn có cả khóa debugreleasetrong ứng dụng Firebase của mình. Nếu lỗi này xuất hiện trong phiên bản sản xuất, hãy thêm SHA-1 release keyứng dụng cơ sở của bạn vào. Nếu nó xuất hiện trong quá trình phát triển, sau đó thêm của bạn SHA-1 debug key.

Nơi thêm dấu tay SHA-1

Lấy khóa gỡ lỗi / phát hành:

keytool -exportcert -list -v -alias [your alias] -keystore [path/to/debug or release.keystore]

Đảm bảo tải xuống bản cập nhật google-services.jsoncho ứng dụng của bạn.


Tôi đã không thành công với GoogleSignInResult.getSuccess () trả về sai và mã là 12500. Cuối cùng, người khác đã thiết lập OAuth của tôi bằng SHA1 của họ thay vì khóa gỡ lỗi của tôi. Điều này đã sửa nó.
Liều lĩnh

@Reckless Tôi rất vui vì điều này đã giúp ích!
Denn

2

Đối với tôi, vấn đề là sử dụng ClientID 'phát hành' với ứng dụng được định cấu hình gỡ lỗi của tôi. Đảm bảo rằng bạn có một bản phát hành và một khóa gỡ lỗi, sử dụng từng phím SHA-1 tương ứng.


2

Nếu bạn đang đến đây từ rung động : Đây là một trong các trường hợp góc chúng ta phải sửa chữa theo tài liệu ở đây: https://pub.dev/packages/google_sign_in nhập mô tả hình ảnh ở đây

  • Đi tới API và thiết bị của Google
  • Chọn ứng dụng bạn muốn triển khai đăng nhập bằng google.
  • Sau đó nhấp vào Bật APIS và Dịch vụ

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

  • Sau đó, Tìm kiếm API của Google Pe People

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

  • Mở thẻ API Google People và nhấp vào bật, ứng dụng của bạn có thể loại bỏ sự cố.

2

Khi ứng dụng của bạn xác thực bằng máy chủ phụ trợ hoặc truy cập API Google từ máy chủ phụ trợ của bạn, thì bạn phải chuyển ID ứng dụng khách OAuth 2.0 đã được tạo cho máy chủ của bạn tới phương thức requestIdToken khi bạn tạo đối tượng GoogleSignInOptions, để truy cập thông tin hồ sơ cơ bản của người dùng . Ngoài ra, đừng quên gửi email hỗ trợ trong màn hình chấp thuận OAuth có trong trang Thông tin đăng nhập trong Bảng điều khiển API.


1

Nó cũng có thể xảy ra rằng trình biên dịch cordova không thể tìm thấy tệp kho khóa thích hợp.



Giải pháp: Trước khi thực hiện, hãy ionic cordova build androidchỉ định các thuộc tính ký

Bước-1 : Tạo tệp kho khóa gỡ lỗi

Thực hiện lệnh

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Sử dụng mật khẩu: android

Bước 2: Copy file keystore ( debug.keystore) từ ~/.androidđến platform/androidthư mục của dự án hiện tại của bạn

Bước 3: Tạo một tệp có tên là release-sign.properties trong platform/androidthư mục

Bước-4: Thêm nội dung trong tệp

storeFile=debug.keystore
keyAlias=androiddebugkey
storePassword=android
keyPassword=android

Lưu ý: Đây là các giá trị mặc định. Nếu bạn đã cung cấp bí danh và mật khẩu tùy chỉnh thì hãy sử dụng chúng cho phù hợp.

Bước-5: Bây giờ xây dựngionic cordova build android


1

Tôi đã gặp sự cố tương tự sau khi mở dự án của mình trên một máy tính khác (Android Studio khác). Trong trường hợp của tôi, tôi đã giải quyết nó bằng cách sử dụng Trợ lý Firebase mà tôi đã sử dụng để thiết lập Firebase ban đầu. Đã mở Hỗ trợ Firebase (Công cụ> Firebase) và chọn Xác thực> Kết nối. Điều này đã kết nối lại dự án với Firebase và cập nhật cấu hình


1

Tôi đã bị mắc kẹt trong vấn đề Đăng nhập Google kể từ 2 tuần, cuối cùng đã sắp xếp ổn thỏa. Cho tôi giải thích lý do. Sự cố liên quan đến firebase. Trong firebase, họ đã đề cập đến trường "email hỗ trợ" là tùy chọn. Nhưng khi tôi đã thêm nó (bất kỳ email cá nhân nào của bạn), vấn đề đã được sắp xếp và tôi nhận được phản hồi. Nếu bạn nhận được lỗi là 12501, thì nó liên quan đến cài đặt trong tài khoản google của bạn.


1

Tôi đã bị mắc kẹt về điều này trong một thời gian.

Đảm bảo rằng các bước này được thực hiện-

Correct SHA key is saved on Firebase Console.
Valid reversed client id.
from fcm console=>select app=>from authentication=>enable google sign-in method

0

Trong trường hợp của tôi, đó là do Id khách hàng Google sai. Tôi thay đổi khóa của mình thành khóa được liệt kê trong google-services.json( oauth_clientđối tượng bên dưới )


0

Đảm bảo rằng bạn đã thiết lập đúng những thứ sau:

  1. Tạo Id khách hàng trong Google Project của bạn.
  2. Cung cấp khóa SHA-1 thích hợp cho Id khách hàng đó. (gỡ lỗi / phát hành)
  3. Cung cấp tên gói thích hợp cho Id khách hàng đó.
  4. Hãy chắc chắn rằng bạn đã tạo Id khách hàng trong strings.xml, google-services.jsonhoặc credentials.jsontập tin.

0

https://developers.google.com/identity/sign-in/android/sign-in làm theo tài liệu api này nhưng lưu ý rằng bên trong WEB_CLIENT_ID sử dụng giá trị của id khách hàng được tạo bên trong tệp google-services.json.

class MainActivity : AppCompatActivity(), GoogleApiClient.OnConnectionFailedListener {
private val TAG = "JSAGoogleSignIn"
private val REQUEST_CODE_SIGN_IN = 1234
private val WEB_CLIENT_ID = "354298333018-XXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
private var mAuth: FirebaseAuth? = null

private var mGoogleApiClient: GoogleApiClient? = null
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    var txt_register = findViewById<TextView>(R.id.txt_register)
    txt_register.setOnClickListener {
        var intent = Intent(this@MainActivity, RegisterActivity::class.java)
        finish()
        startActivity(intent)
    }
    val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(WEB_CLIENT_ID)
            .requestEmail()
            .build()
    mGoogleApiClient = GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build()

    mAuth = FirebaseAuth.getInstance()
    sign_in_button.setOnClickListener {
        val intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient)
        startActivityForResult(intent, REQUEST_CODE_SIGN_IN)
    }

}


override fun onConnectionFailed(p0: ConnectionResult) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}


private fun updateUI(user: FirebaseUser?) {
    if (user != null) {
        Log.e("Email", "Value" + user.email)
    }

}

fun signIn() {

}

override fun onStart() {
    super.onStart()
    val currentUser = mAuth!!.currentUser
    updateUI(currentUser)
}

public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == REQUEST_CODE_SIGN_IN) {
        val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data)
        if (result.isSuccess) {
            // successful -> authenticate with Firebase
            val account = result.signInAccount
            firebaseAuthWithGoogle(account!!)
        } else {
            // failed -> update UI
            updateUI(null)
            Toast.makeText(applicationContext, "SignIn: failed!" + result.status,
                    Toast.LENGTH_SHORT).show()
        }
    }
}

private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
    Log.e(TAG, "firebaseAuthWithGoogle():" + acct.id!!)

    val credential = GoogleAuthProvider.getCredential(acct.idToken, null)
    mAuth!!.signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success
                    Log.e(TAG, "signInWithCredential: Success!")
                    val user = mAuth!!.currentUser
                    updateUI(user)
                } else {
                    // Sign in fails
                    Log.w(TAG, "signInWithCredential: Failed!", task.exception)
                    Toast.makeText(applicationContext, "Authentication failed!",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
            }
}

0

Trong trường hợp của tôi, Sau khi thêm vân tay trong bảng điều khiển Firebase, bảng điều khiển dành cho nhà phát triển của Google sẽ tự động chọn và hiển thị dấu vân tay. Nhưng đăng nhập không hoạt động. Sau khi xem xét từng bước, tôi nhận ra rằng Google đã đảo ngược gói tệp kê khai của tôi như thế này com.xxxxxxxx.app. Nhưng trên thực tế app.xxxxxxxx.com, trong bảng điều khiển dành cho nhà phát triển của Google. Vì vậy, tôi đã xóa tự động tạo một dấu vân tay và thêm dấu vân tay với tên gói chính xác. BÙM !!. Nó đã làm việc.



0

Đảm bảo rằng dự án của bạn không được chứa bất kỳ ký tự đặc biệt nào bao gồm số hoặc bất kỳ loại ký hiệu nào (tên dự án phải đơn giản là com.google.testproject)


Đó gọi tên gói dự án không tên dự án
b devloper

0

Trong trường hợp của tôi, tôi đang làm việc trên một ứng dụng phi sản xuất, vấn đề là khi tạo một dự án trong bảng điều khiển firebase, đã xảy ra sự cố khi đồng bộ hóa các khóa SHA-1 qua lại từ bảng điều khiển dành cho nhà phát triển của Firebase và Google. Vì vậy, tôi quyết định tạo dự án trước trên Bảng điều khiển dành cho nhà phát triển của Google, sau đó chọn dự án đó khi tạo dự án mới trên bảng điều khiển Firebase.

Tôi cũng đã thực hiện một hướng dẫn cho điều này, có thể giúp bạn.


0

Trong trường hợp của tôi, vấn đề là trình giả lập của tôi không có Cửa hàng Play. Tôi đã tạo trình giả lập (có tên là API 23) thông qua Visual Studio, vì tôi cũng phát triển bằng Xamarin.Forms và trong Trình quản lý thiết bị Android của Visual Studio, bạn có thể chọn xem trình mô phỏng của mình có nên có Cửa hàng Google Play hay không.

Phải tạo trình giả lập thông qua AVD của Android Studio và đảm bảo rằng nó có Cửa hàng Play:

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


0

Trong trường hợp của tôi, lỗi này là do xác thực android đã bị nhóm cấp cao xóa vì có vẻ như không cần khóa android trong xác thực phụ trợ. Vì vậy, cả hai phím ứng dụng khách Android và Web đều cần thiết khi đăng nhập google.


-1

Hãy thử các tùy chọn này:

keytool -list -v -keystore C:\Users\MG\Desktop\test.jks -alias test

Nó nhắc nhập mật khẩu và chỉ cần nhập mật khẩu. Bạn có thể thấy dấu vân tay SHA1, MD5.

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.