ข้อผิดพลาดในการลงชื่อเข้าใช้ Google 12500


107

ฉันกำลังพยายามรวมการลงชื่อเข้าใช้ Google เข้ากับแอปของฉัน ฉันไม่มีเซิร์ฟเวอร์ส่วนหลังฉันเพิ่งได้รับรายละเอียดของบัญชี Google ที่เข้าสู่ระบบไปยังแอปของฉัน

ฉันลองใช้ครั้งแรกโดยใช้ตัวอย่างการลงชื่อเข้าใช้Googleแต่ฉันพบข้อผิดพลาด (ไม่มีการเปลี่ยนแปลงรหัสใด ๆ ยกเว้นการพิมพ์ stacktrace ด้านล่าง) ฉันเพิ่งใช้ตัวอย่าง SignInActivity เนื่องจากฉันไม่มีเซิร์ฟเวอร์ส่วนหลัง

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

เท่าที่ผมอ่านปัญหาอาจจะเกิดจากSHA1 รุ่น

ฉันทำตามคู่มือฉบับสมบูรณ์แต่ดูเหมือนว่ามันใช้ไม่ได้

ฉันคัดลอก SHA1 จาก gradle signReport

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

อะไรคือสาเหตุที่เป็นไปได้ของสิ่งนี้?

ขอบคุณ

ปล. นี่อาจเป็นสาเหตุได้หรือไม่?

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

สวัสดีคุณช่วยโพสต์รหัสของคุณได้ไหม
Dilip

สวัสดี @ ดิลิปฉันใช้สิ่งนี้จริงๆ:) github.com/googlesamples/google-services/tree/master/android/… อัปเดตอยู่แล้ว
Aaron

1
ดังนั้นสิ่งที่เกิดขึ้นคุณได้รับข้อผิดพลาดเดียวกันหรือสิ่งอื่นเกิดขึ้นสิ่งหนึ่งโปรดสร้าง SHA1 ด้วยตนเองอีกครั้งและวางที่คอนโซลนักพัฒนาซอฟต์แวร์กับแอปของคุณและตรวจสอบชื่อแพ็คเกจข้ามและดาวน์โหลดไฟล์ google-services.json และวางที่ระดับแอป
Dilip

ใช่ @Dilip ฉันได้รับข้อผิดพลาดเดียวกัน ฉันขีดฆ่าชื่อแพ็คเกจ ฉันลองใช้ที่เก็บคีย์อื่นด้วยซ้ำ แต่ผลลัพธ์ก็เหมือนกัน
Aaron

คุณต้องทำการเปลี่ยนแปลงโค้ดเพื่อรับคีย์ API ของคุณ และใช่คุณควรอัปเดตบริการการเล่น
OneCricketeer

คำตอบ:


38

เพียงอัปเดตบริการ Google Play ของคุณเป็นเวอร์ชันล่าสุด (หรือ 11720000 ในกรณีนี้) หากคุณใช้ภาพ AVD, Nexus 5 และ 5X สนับสนุน Google Play เมื่อโปรแกรมจำลองเริ่มทำงานแล้วให้ไปที่เมนู Extended Controls> Google Play จากนั้นอัปเดต


จะทำบนอุปกรณ์ Samsung ได้อย่างไร?
Pinkesh Darji

7
นี่ไม่ใช่ปัญหาในกรณีของฉัน บริการ Google Play เป็นข้อมูลล่าสุดแล้ว
Adam Hurwitz

วิธีแก้ปัญหาของ @ zub0r เกี่ยวกับโครงการและลิงก์ความเป็นส่วนตัวควรได้รับการยอมรับว่าเป็นคำตอบที่ถูกต้อง
Adam Hurwitz

โปรดเมนูการควบคุมเพิ่มเติมบนโปรแกรมจำลองหรือสตูดิโอภาพอยู่ที่ไหน
George Udosen

129

ข้อผิดพลาด PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, null)

ข้อผิดพลาด 12500 นี้สามารถแก้ไขได้โดยเพิ่มที่อยู่อีเมลสนับสนุน ในโครงการของคุณในการตั้งค่าโครงการ เปิดลิ้งค์ https://console.firebase.google.com/

เลือกโครงการของคุณและเปิดแท็บการตั้งค่า

ระบุอีเมลสนับสนุนที่ถูกต้องและรีสตาร์ทแอปพลิเคชันของคุณทันที

ป้อนคำอธิบายภาพที่นี่


11
ขอบคุณ! ข้อผิดพลาดนี้ค่อนข้างคลุมเครืออาจหมายถึงสิ่งใด ๆ ที่กล่าวถึงในคำตอบที่นี่ ปัญหาของฉันคือปัญหานี้ :(
Billda

3
ฉันทำทุกอย่างที่กล่าวถึงใน Developer Console developers.google.com/identity/sign-in/android/sign-inและหลังจากใช้เวลาหนึ่งวันในการลองใส่ลายนิ้วมือ SHA-1 และทั้งหมดนี้คือปัญหา คุณช่วย ขอบคุณมาก!
คลาส Android

ลองเพิ่มคีย์ SHA1 สำหรับโครงการของคุณ @RohitSingh
Maddu Swaroop

1
@MadduSwaroop ถ้ามีวิธีในการโหวตสองครั้ง ... ขอบคุณครับ
Lefty

2
คุณช่วยวันของฉัน
Houssem

46

ตรวจสอบว่ามีการเพิ่มลายนิ้วมือ SHA-1 ในการตั้งค่าโปรเจ็กต์ firebase หรือไม่ หากไม่พบให้ค้นหาลายนิ้วมือ SHA-1 โดยใช้

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

ค้นหาลายนิ้วมือ SHA-1 ของคีย์รีลีสโดยใช้

keytool -list -v -keystore <keystore path>

ลบ<keystore path>ด้วยเส้นทางของที่เก็บคีย์

จากนั้นเพิ่มลายนิ้วมือ SHA-1 ทั้งสองลงในการตั้งค่าโครงการ Firebase

หมายเหตุ: อย่าลืมแทนที่ google-services.json ด้วย google-services.json ที่อัปเดตด้วยลายนิ้วมือใหม่ ฉันหายไปสองวันในนั้น

ในขณะที่แก้ไขข้อบกพร่อง

Android studio จะสร้าง โดยอัตโนมัติ~/.android/debug.keystoreในการแก้ไขข้อบกพร่องบิวด์แรกและใช้เพื่อลงนามแอป

ในการเรียกใช้ SHA-1 (รหัสผ่านandroid) ( doc ):

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

นี้SHA-1ควรจะเพิ่มการตั้งค่า app ที่firebaseจะช่วยให้การใช้งานของสัญญาณ google ในความสามารถในการแก้ปัญหาขณะที่การทดสอบสร้าง


2
คุณแน่ใจได้อย่างไรว่าเขาใช้ Firebase
PaulG

คาดเดาได้ (ความคล้ายคลึงกันในรหัสและเซิร์ฟเวอร์) โครงการ Firebase เชื่อมต่อกับคอนโซล GCP ด้วย นอกจากนี้เรายังสามารถเปลี่ยนลายนิ้วมือในข้อมูลรับรอง GCP
Niyas Nazar

ข้อผิดพลาดเดียวกันกับ แต่ในกรณีของฉันมันไม่เกี่ยวข้องกับ firebase (ฉันไม่ได้ใช้มัน)
Majed DH

ไปที่console.developers.google.com/apis/credentials เพิ่มข้อมูลรับรองใหม่ (O Auth Client) ด้วยคีย์ SHA (Firebase ทำสิ่งนี้โดยอัตโนมัติสำหรับโครงการ firebase ของเรา)
Niyas Nazar

ไฟล์ google-services.json สามารถพบได้ในไดเรกทอรีแอปภายในโครงการของคุณ (ผ่าน Finder / File Explorer)
Mehul Tandale

44

 สำหรับข้อผิดพลาด 12500 คุณต้องเพิ่มการสนับสนุน gmail ในการตั้งค่าของ firebase เท่านั้นและสำหรับข้อผิดพลาด 10 ให้เพิ่มลายนิ้วมือ ssh ในคอนโซล firebase ดังที่คุณเห็นในภาพ


คำตอบที่ดีและตรงไปตรงมาเพียงแค่กำหนดค่าบัญชี gmail ของฉันและแบมก็ทำส่วนที่เหลือ
Ajeett

"สำหรับข้อผิดพลาด 12500 คุณต้องเพิ่มการสนับสนุน gmail ในการตั้งค่าของ firebase เท่านั้นและสำหรับข้อผิดพลาด 10 ให้เพิ่มลายนิ้วมือ ssh ในคอนโซล firebase ดังที่คุณเห็นในภาพ" สิ่งนี้ช่วยได้มาก ฉันได้รับ 12500 ใช้ลายนิ้วมือ SHA1 แล้วก็ยังใช้งานไม่ได้ การเพิ่มอีเมลสนับสนุนช่วยได้ ขอบคุณ!
คลาส Android

44

อีเมลสนับสนุนและลิงก์โปรเจ็กต์และความเป็นส่วนตัวทั้งหมดจำเป็นสำหรับการลงชื่อเข้าใช้ Google เพื่อให้ทำงานได้มิฉะนั้นจะส่ง 12500

ตั้งค่าใน https://console.developers.google.com/apis/credentialsที่ด้านล่างของแท็บที่สองชื่อ "หน้าจอคำยินยอม OAuth" - คุณจะพบลิงก์สามลิงก์ที่ต้องกำหนดค่า

สิ่งนี้ไม่ได้กล่าวถึงที่ใดก็ได้ในคำแนะนำ Firebase


3
ขอบคุณมันใช้งานได้สำหรับฉัน ฉันเสียเวลาเกือบทั้งวันในการแก้ไขปัญหา
krishan kumar Sharma

2
ขอบคุณฉันเพิ่งเพิ่มหนึ่งใน 'โดเมนที่ได้รับอนุญาต' ในลิงก์ความเป็นส่วนตัวและทุกอย่างก็ใช้ได้ คุณช่วยฉันได้หลายชั่วโมงในการลองผิดลองถูก💌
Coco

คำตอบนี้ควรได้รับการยอมรับ ฉันดิ้นรนกับ 2 วันนั้นไม่ประสบความสำเร็จเลย Google ควรอัปเดตคำแนะนำเนื่องจากตอนนี้เอกสารของพวกเขาทำให้เข้าใจผิดคำแนะนำของพวกเขาจะไม่ทำงานและรหัสข้อผิดพลาดจะบอกอะไรเลย
user1209216

1
จะเพิ่มลิงค์ความเป็นส่วนตัวได้ที่ไหน?
Shihab Uddin

4
ในแท็บที่สองชื่อ "หน้าจอคำยินยอม OAuth" ที่ด้านล่างของแบบฟอร์มคุณมีลิงก์สามลิงก์
zub0r

21

ลองอัปเดตหน้าจอคำยินยอม OAuth บน https://console.developers.google.com/apis/credentials


3
ฉันต้องเพิ่มอีเมลสนับสนุนแล้วมันก็เริ่มทำงาน นี่คือความกระพือปีก
adarsh

นอกจากนี้ยังจำเป็นต้องมีการเชื่อมโยงโครงการและความเป็นส่วนตัวทั้งหมดมิฉะนั้นจะพ่น 12500 ซึ่งไม่ได้กล่าวถึงที่ใดก็ได้
zub0r

ลิงก์ @ zub0r ไม่จำเป็น ที่มา: ฉันเพิ่งทำโดยไม่มีพวกเขา
easycheese

18

ฉันติดอยู่ในขณะนี้

ตรวจสอบให้แน่ใจว่าทำตามขั้นตอนเหล่านี้แล้ว -

  • คีย์ SHA ที่ถูกต้องจะถูกบันทึกไว้ใน Firebase Console
  • ดาวน์โหลด google-service.json ล่าสุด
  • และสุดท้ายและสำคัญที่สุด บันทึกคำยินยอม OAuth ภายใต้ข้อมูลรับรองใน google api หน้าจอ OAuthสิ่งนี้ใช้เวลานานในการคิดออก และทำงานได้ดีหลังจากนี้

6
ดี. นี่ควรเป็นคำตอบที่ยอมรับสำหรับปี 2019 ที่นี่ Google "ต้อง" อย่างแปลกประหลาดอัปเดตเนื้อหาภายในOAuth Consent
mochadwi

1
ฮึโหวตอีกเรื่องนี้ ปัญหาที่คลุมเครือของฉันทั้งหมด
easycheese

12

ดูเหมือนว่า SHA1 ของคุณจะถูกเขียนทับโดย Google play store ตรวจสอบใน Google Play Store ของคุณแผงการเปิดตัวภายใต้การลงนามแอปดูว่า Google Play มีการเพิ่ม SHA1 เพิ่มเติมหรือไม่

และคัดลอก SHA1 นั้นเพิ่มในสถานที่ที่เกี่ยวข้องของคุณจะทำงานได้


1
โอ้พระเจ้า! ขอบคุณสำหรับเคล็ดลับนี้! App Bundle สร้าง SHA1 ของตัวเองดังนั้นคีย์รุ่นที่ใช้ในเครื่อง (เมื่อสร้าง APK) จึงไม่ใช่คีย์ที่ถูกต้องอีกต่อไป
Jia Tse

นี่เป็นขั้นตอนการทำงานที่สับสนที่สุดเท่าที่เคยมีมา แต่ขอบคุณสำหรับเคล็ดลับ
DarkNeuron

5

หากยังมีใครที่มีปัญหาคล้าย ๆ กันหากคุณกำลังเพิ่มขอบเขตที่กำหนดเองตรวจสอบให้แน่ใจว่าเป็นขอบเขตที่ถูกต้อง ในกรณีของฉันฉันผสมขอบเขตของ Facebook กับขอบเขตของ Google และใช้เวลาสักพักหนึ่งในการคิดออก!


5

ฉันใช้ Firebase Authentication SHA-1 ของฉันถูกระบุอย่างถูกต้องรหัสไคลเอ็นต์ก็ถูกต้องเช่นกัน แต่ฉันยังได้รับ 12500

ปรากฎว่าปัญหาของฉันคือฉันไม่ได้ระบุอีเมลการสนับสนุนในการตั้งค่าโครงการของฉัน (การตั้งค่า -> แท็บทั่วไป -> ส่วนโครงการของคุณ (การตั้งค่าสาธารณะ))


3
สิ่งเดียวกันที่เกิดขึ้นสำหรับฉันเช่นกัน มีปัญหาด้านเอกสารที่ร้ายแรงเกี่ยวกับบริการของ Google ฉันหวังว่าพวกเขาจะบันทึกปัญหาดังกล่าวหรืออย่างน้อยก็แสดงข้อผิดพลาดที่เป็นมิตรกับผู้ใช้
ashish-goel

4

ฉันคิดว่าข้อผิดพลาดมาจากผิด SHA1 โปรดอย่าลืมว่า SHA1 นั้นแตกต่างกันระหว่างโหมดรีลีสและโหมดดีบักใน Android Studio แทนที่จะใช้ keytool เพื่อรับ SHA1 คุณสามารถใช้ Gradle project -> Task -> android -> signReport ใน android studio (สามารถเปิดได้จากเมนู View -> Toolwindow -> gradle) เพื่อรับรีลีสและดีบัก SHA1 หลังจากนั้นเพื่อให้ใช้งานได้ง่ายคุณต้องสร้างข้อมูลรับรอง 2 รายการแยกกันโดยมี SHA1 สองรายการบนคอนโซลคลาวด์ของ Google (Google เพียงสั่งให้สร้าง 1 โดยใช้ SHA1 รีลีสเมื่อเราพัฒนามันจะไม่ทำงานเนื่องจากใช้การดีบัก SHA1)


4

ไปที่โครงการของคุณในคอนโซล Firebase เปิดการตั้งค่าโครงการเพิ่มลายนิ้วมือใบรับรอง SHA ที่นั่น ดาวน์โหลดไฟล์ google-services.json ที่อัปเดตแล้วเพิ่มลงในโฟลเดอร์แอป Projects ของคุณ

สิ่งนี้ได้ผลสำหรับฉัน

ภาพหน้าจอคอนโซล Firebase


4

ขั้นแรกตรวจสอบให้แน่ใจว่าคุณได้ลงทะเบียนแอปของคุณในคอนโซลนักพัฒนาของ Google

ตรวจสอบว่าคุณมีทั้งคีย์debugและreleaseคีย์ในแอปพลิเคชัน Firebase หากข้อผิดพลาดนี้ปรากฏขึ้นในการใช้งานจริงให้เพิ่มSHA-1 release keyแอปฐานดับเพลิงของคุณ หากปรากฏในการพัฒนาให้เพิ่มSHA-1 debug keyไฟล์.

จะเพิ่มลายนิ้วมือ SHA-1 ได้ที่ไหน

รับคีย์การดีบัก / รีลีส:

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

อย่าลืมดาวน์โหลดอัปเดตgoogle-services.jsonลงในแอปของคุณ


ฉันล้มเหลวกับ GoogleSignInResult.getSuccess () ส่งคืนเท็จและรหัส 12500 ในที่สุดก็มีคนอื่นตั้งค่า OAuth ของฉันด้วย SHA1 แทนที่จะเป็นคีย์การแก้ปัญหาของฉัน สิ่งนี้แก้ไขได้
ประมาท

@Reckless ฉันดีใจที่ช่วยได้!
Denn

2

สำหรับฉันปัญหาคือการใช้ ClientID 'release' กับแอปที่กำหนดค่าดีบักของฉัน ตรวจสอบให้แน่ใจว่าคุณมีรีลีสและคีย์ดีบักโดยใช้ SHA-1 แต่ละอันตามลำดับ


2

หากคุณมาที่นี่จากการกระพือปีก : นี่เป็นหนึ่งในกรณีสำคัญที่เราต้องแก้ไขตามเอกสารที่นี่: https://pub.dev/packages/google_sign_in ป้อนคำอธิบายภาพที่นี่

  • ไปที่Google APIs & Sevices
  • เลือกแอปที่คุณต้องการใช้การลงชื่อเข้าใช้ Google
  • จากนั้นคลิกที่เปิดใช้งาน APIS และบริการ

ป้อนคำอธิบายภาพที่นี่

  • จากนั้นค้นหา Google Peoples API

ป้อนคำอธิบายภาพที่นี่

  • เปิดการ์ด Google People API แล้วคลิกเปิดใช้งานแอปของคุณอาจกำจัดปัญหาได้

2

เมื่อแอปของคุณตรวจสอบสิทธิ์กับเซิร์ฟเวอร์แบ็กเอนด์หรือเข้าถึง Google API จากเซิร์ฟเวอร์แบ็กเอนด์คุณจะต้องส่งรหัสไคลเอ็นต์ OAuth 2.0 ที่สร้างขึ้นสำหรับเซิร์ฟเวอร์ของคุณไปยังเมธอด requestIdToken เมื่อคุณสร้างออบเจ็กต์ GoogleSignInOptions เพื่อเข้าถึงข้อมูลโปรไฟล์พื้นฐานของผู้ใช้ . นอกจากนี้อย่าลืมส่งอีเมลสนับสนุนในหน้าจอคำยินยอม OAuth ที่พบในหน้าข้อมูลรับรองในคอนโซล API


2

ในกรณีของฉันข้อผิดพลาดนี้เกิดขึ้นเนื่องจากการตรวจสอบสิทธิ์ Android ถูกลบออกโดยทีมอาวุโสเนื่องจากดูเหมือนว่าไม่จำเป็นต้องใช้รหัส Android ในการตรวจสอบสิทธิ์แบ็กเอนด์ ดังนั้นจึงต้องใช้ทั้งคีย์ไคลเอ็นต์ Android และเว็บในการเข้าสู่ระบบของ Google


1
ขอบคุณสำหรับสิ่งนี้! ฉันลบรหัสไคลเอ็นต์ Android ของฉันด้วยเพราะฉันคิดว่าไม่จำเป็นเนื่องจากเราต้องการเพียงรหัสไคลเอนต์เว็บเท่านั้น
zeenosaur

1

นอกจากนี้ยังสามารถเกิดขึ้นได้ว่าคอมไพเลอร์ Cordova ไม่พบไฟล์ที่เก็บคีย์ที่เหมาะสม



วิธีแก้ไข:ก่อนดำเนินการให้ionic cordova build androidระบุคุณสมบัติการลงนาม

ขั้นตอนที่ 1 : สร้างไฟล์ที่เก็บคีย์การดีบัก

ดำเนินการคำสั่ง

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

ใช้รหัสผ่าน: android

ขั้นตอนที่ 2:คัดลอกไฟล์ที่เก็บคีย์ ( debug.keystore) จาก~/.androidไปยังplatform/androidไดเร็กทอรีของโปรเจ็กต์ปัจจุบันของคุณ

ขั้นตอนที่ 3:สร้างไฟล์ชื่อrelease-signing.propertiesในplatform/androidไดเร็กทอรี

ขั้นตอนที่ 4:เพิ่มเนื้อหาในไฟล์

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

หมายเหตุ: ค่าเหล่านี้เป็นค่าเริ่มต้น หากคุณระบุนามแฝงและรหัสผ่านที่กำหนดเองให้ใช้ตามนั้น

ขั้นตอนที่ 5:ตอนนี้สร้างionic cordova build android


1

ฉันประสบปัญหาเดียวกันหลังจากเปิดโครงการบนคอมพิวเตอร์เครื่องอื่น (Android Studio อื่น) ในกรณีของฉันฉันแก้ไขโดยใช้ Firebase Assistant ซึ่งฉันเคยใช้ในการตั้งค่า Firebase ในตอนแรก เปิด Firebase Assistant (Tools> Firebase) แล้วเลือก Authentication> Connect สิ่งนี้ได้เชื่อมต่อโครงการกับ Firebase อีกครั้งและอัปเดตการกำหนดค่า


1

ฉันติดปัญหาการเข้าสู่ระบบ Google ตั้งแต่ 2 สัปดาห์ในที่สุดก็เรียงลำดับได้ดีช่วยอธิบายเหตุผลให้ฉันฟัง ปัญหานี้เกี่ยวข้องกับ firebase ใน firebase พวกเขากล่าวถึงช่อง "อีเมลสนับสนุน" เป็นทางเลือก แต่เมื่อฉันเพิ่ม (อีเมลส่วนตัวของคุณ) ปัญหาก็ถูกจัดเรียงและฉันได้รับคำตอบ หากคุณได้รับข้อผิดพลาดเป็น 12501 แสดงว่าเกี่ยวข้องกับการตั้งค่าในบัญชี Google ของคุณ


1

ฉันติดอยู่ในขณะนี้

ตรวจสอบให้แน่ใจว่าทำตามขั้นตอนเหล่านี้แล้ว -

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

ในกรณีของฉันเป็นเพราะรหัสลูกค้า Google ไม่ถูกต้อง ฉันเปลี่ยนคีย์เป็นคีย์ที่อยู่ในรายการgoogle-services.json(ภายใต้oauth_clientวัตถุ)


0

ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าสิ่งต่อไปนี้อย่างถูกต้อง:

  1. สร้างรหัสลูกค้าในโครงการ Google ของคุณ
  2. ระบุคีย์ SHA-1 ที่เหมาะสมสำหรับรหัสลูกค้านั้น (debug / release)
  3. ระบุชื่อแพ็กเกจที่เหมาะสมสำหรับรหัสลูกค้านั้น
  4. ให้แน่ใจว่าคุณได้สร้างรหัสลูกค้าในstrings.xml, google-services.jsonหรือcredentials.jsonไฟล์

0

https://developers.google.com/identity/sign-in/android/sign-in ทำตามเอกสาร API นี้ แต่โปรดทราบว่าภายใน WEB_CLIENT_ID ใช้ค่าของรหัสไคลเอ็นต์ซึ่งสร้างขึ้นในไฟล์ 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

ในกรณีของฉันหลังจากเพิ่มลายนิ้วมือในคอนโซล Firebase คอนโซลนักพัฒนาซอฟต์แวร์ของ Google จะดึงลายนิ้วมือโดยอัตโนมัติและแสดงลายนิ้วมือ แต่การลงชื่อเข้าใช้ไม่ได้ผล หลังจากมองในทุกขั้นตอนฉันคิดว่า Google com.xxxxxxxx.appตรงกันข้ามไฟล์ชุดของฉันอย่างชัดแจ้งเช่นนี้ แต่จริงๆแล้วapp.xxxxxxxx.comในคอนโซลนักพัฒนาซอฟต์แวร์ของ Google ดังนั้นฉันจึงลบอัตโนมัติสร้างลายนิ้วมือและเพิ่มลายนิ้วมือด้วยชื่อแพ็คเกจที่ถูกต้อง บูม !!. มันได้ผล


0

ข้อผิดพลาดปรากฏแก่ฉันเมื่อไม่ได้เปิดใช้งานตัวเลือก Google ดังที่แสดงในภาพตามที่แสดงในภาพ

เกิดขึ้นเมื่อฉันเปลี่ยนบัญชีของ Google และลืมเปิดตัวเลือกในการเชื่อมต่อกับ Google


0

ตรวจสอบให้แน่ใจว่าโปรเจ็กต์ของคุณไม่ควรมีอักขระพิเศษใด ๆ รวมถึงตัวเลขหรือสัญลักษณ์ใด ๆ (ชื่อโปรเจ็กต์ควรเป็นแบบเรียบง่ายเช่น com.google.testproject)


เรียกว่าชื่อแพ็คเกจโครงการไม่ใช่ชื่อโครงการ
b devloper

0

ในกรณีของฉันฉันกำลังทำงานกับแอปที่ไม่ได้ใช้งานจริงปัญหาคือเมื่อสร้างโปรเจ็กต์ในคอนโซล Firebase มีปัญหาในการซิงโครไนซ์คีย์ SHA-1 ไปมาจากคอนโซลนักพัฒนา Firebase และ Google ดังนั้นฉันจึงตัดสินใจสร้างโปรเจ็กต์ก่อนบนคอนโซลนักพัฒนาซอฟต์แวร์ของ Google จากนั้นเลือกเมื่อสร้างโปรเจ็กต์ใหม่บนคอนโซล Firebase

ฉันยังทำบทช่วยสอนสำหรับสิ่งนี้ซึ่งอาจช่วยคุณได้


0

ในกรณีของฉันปัญหาคือโปรแกรมจำลองของฉันไม่มี Play Store ฉันได้สร้างโปรแกรมจำลอง (ชื่อ API 23) ผ่าน Visual Studio เพราะฉันพัฒนาโดยใช้ Xamarin.Forms เช่นกันและในโปรแกรมจัดการอุปกรณ์ Android ของ Visual Studio คุณสามารถเลือกได้ว่าโปรแกรมจำลองของคุณควรมี Google Play Store หรือไม่

ต้องสร้างโปรแกรมจำลองผ่าน AVD ของ Android Studio และตรวจสอบให้แน่ใจว่ามี Play Store:

ป้อนคำอธิบายภาพที่นี่


-1

ลองใช้ตัวเลือกนี้:

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

มันแจ้งให้ใส่รหัสผ่านและเพียงแค่ป้อนรหัสผ่าน คุณสามารถดูลายนิ้วมือ SHA1, MD5

ป้อนคำอธิบายภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.