ข้อผิดพลาด: สถานะ {statusCode = DEVELOPER_ERROR, resolution = null}


105

ฉันกำลังใช้การลงชื่อเข้าใช้ gplus และได้รับข้อผิดพลาดนี้ในขณะที่ฉันอยู่ใน onActivityResult ....

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
    client.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 0) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()) {

            GoogleSignInAccount acct = result.getSignInAccount();
//                Log.d("Result","details"+ acct.getDisplayName() + acct.getEmail());

            mEmail = acct.getEmail();
            String mFullName = acct.getDisplayName();
            String mGoogleplusId = acct.getId();


            SocialUser user = new SocialUser();
            user.setType("googleplus");

            user.setEmail(mEmail);
            user.setFullname(mFullName);
            user.setId(mGoogleplusId + "");
            loginParams.put("email_id", mEmail);
            loginParams.put("googlePlusId", mGoogleplusId);
            loginParams.put("full_name", mFullName);
            loginParams.put("registrationType", "googleplus");
            SignUpService(user);


        } else {
            Toast.makeText(CustomerLogIn.this, "Unable to fetch data, Proceed manually", Toast.LENGTH_SHORT).show();
        }
    }
}

และฉันกำลังเรียกร้องให้เข้าสู่ระบบ gplus เมื่อคลิกปุ่ม บนปุ่มกดปุ่มต่อไปนี้จะถูกเรียกใช้งาน ....

 GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(CustomerLogIn.this)

            .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
            .build();


    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, 0);

และฉันกำลัง geetng ข้อผิดพลาดนี้ ...

Status{statusCode=DEVELOPER_ERROR, resolution=null}

ทางสายนี้ ....

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

ช่วยแนะนำวิธีแก้ปัญหา


1
แอปพลิเคชันถูกกำหนดค่าไม่ถูกต้อง ตรวจสอบการกำหนดค่า google api
1'hafs

6
ใช่ แต่ฉันไม่พบว่ามีอะไรผิดปกติ
Gurvinder Singh

ฉันไม่ได้ใช้ firebase ดูวิธีแก้ปัญหาของฉันที่นี่: stackoverflow.com/a/46828895/1160216
Mike Miller

คำตอบ:


216

คุณต้องเพิ่มคีย์ SHA1 ในการกำหนดค่าคอนโซล firebase คุณสามารถทำได้ด้วยวิธีนี้:

คอนโซล Firebase ( https://console.firebase.google.com ) -> โครงการของคุณ -> การกำหนดค่า -> เลื่อนไปที่

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

คุณจะพบคีย์ SHA1 ที่เรียกใช้ "รายงานการลงชื่อ" จาก Android Studio:

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

จากนั้นดูที่ "แท็บเรียกใช้" และคลิกปุ่ม:

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

ฉันคิดว่ามันเป็นวิธีที่ง่ายกว่า หวังว่าจะช่วยได้


1
นี่เป็นวิธีที่ง่ายที่สุดในการรับ SHA-1 จากคอนโซลนักพัฒนาของ Google: stackoverflow.com/a/50124038/4923891
eren130

ฉันมีปัญหาในการทำความเข้าใจว่าจะวางคีย์ SHA นั้นไว้ที่ใดใน Firebase Console ในที่สุดก็เจอแล้ว. เปิดการตั้งค่าโปรเจ็กต์> เลื่อนลงเพิ่มลายนิ้วมือใส่คีย์ SHA ที่นั่น> ดาวน์โหลด google-services.json ใหม่และวางไว้ที่ android-app \ app
paakjis

1
บันทึก! แม้ว่าคอนโซล firebase จะมีช่องว่างสำหรับแฮชคีย์ SHA-256 แต่คุณต้องป้อนคีย์ SHA-1 SHA-256 จะยังคงให้ข้อผิดพลาดแก่คุณ
f.khantsis

เป็นประโยชน์. ขอบคุณ!
Pooja

30

คุณอาจสร้างแฟ้มการกำหนดค่าใช้ SHA1 ของคุณผลิตโทเค็นการใช้androiddebugkeyนามแฝงในการรวบรวม SHA1 ที่สอดคล้องกับรุ่นแก้ปัญหาของแอปและคัดลอกไฟล์การตั้งค่าไปยังไดเรกทอรี 'app' คุณควรจะมีการตั้งค่าไฟล์ทั้งสอง (หนึ่งสำหรับ วัตถุประสงค์ในการดีบักและอีกประการหนึ่งสำหรับสภาพแวดล้อมการผลิต)

อ้างอิงจากคำแนะนำทีเผยแพร่ในhttps://developers.google.com/identity/sign-in/android/start


5
ข้อผิดพลาดของฉันได้รับการแก้ไขเมื่อฉันเปลี่ยนไปใช้ข้อมูลรับรองไคลเอนต์เว็บแทนไคลเอนต์ Android สำหรับรหัสไคลเอ็นต์ OAuth 2.0 คำพูดยังคงทำให้ฉันสับสนขณะที่ฉันกำลังพัฒนาแอพ Android ที่คุยกับเว็บเซิร์ฟเวอร์ ... แต่อย่างน้อยข้อผิดพลาดก็หายไป
Burrito

12

ฉันมีปัญหาเดียวกันและทำให้มันใช้งานได้โดยทำตามขั้นตอนเหล่านี้:

1. เพิ่มลายนิ้วมือ DEBUG_KEYSTORE SHA1 ในโปรเจ็กต์ firebase ใช้คำสั่งต่อไปนี้ (MAC / LINUX)

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

2. ตอนนี้สร้าง apk ที่ลงนามของโครงการของคุณ กระบวนการนี้รวมถึงการสร้างที่เก็บคีย์สำหรับเวอร์ชันเผยแพร่ของแอปของคุณ

  Copy the path of the newly generated .jks file.

3. ตอนนี้สร้างลายนิ้วมือ RELEASE_KEYSTORE SHA1 โดยใช้คำสั่งต่อไปนี้

  keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

4. คัดลอก SHA1 ใหม่จากเอาต์พุตและเพิ่มเป็นลายนิ้วมือ SHA1 อื่นในคอนโซลแอปพลิเคชัน Firebase ของคุณ

ตอนนี้คุณพร้อมแล้ว! ---- หวัง! มันช่วย.


ที่ปล่อย sha1 เท่านั้นที่กำลังวางจากนั้นยังได้รับข้อผิดพลาดนี้สร้าง google_services.xml สำหรับการลงชื่อเข้าใช้ Google การวิเคราะห์และ gcm ไฟล์เดียว
Harsha

ตรวจสอบให้แน่ใจว่า sha1 ของคุณเป็นเวอร์ชัน 'วางจำหน่าย' ของแอปไม่ใช่เวอร์ชัน 'debug'
Udit Kapahi

ฮ่าใช่กำลังสร้าง apk ที่ลงนามและเผยแพร่ใน appstore ด้วยซึ่ง jks และรหัสผ่านที่เก็บคีย์ใช้เท่านั้น
Harsha

ssl ที่เปิดของฉันคือ openssl-0.9.8k_WIN32 น. โดยใช้ previos สำหรับการพัฒนาหนึ่ง
Harsha

keytool ต้องใช้รหัสผ่าน : "android"
Guglie

11

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

วิธีที่ฉันแก้ไขคือการหยิบคีย์ที่ตรงกับข้อความที่ไฮไลต์ เนื่องจากการใช้คำว่า 'เซิร์ฟเวอร์' ที่สับสนในหน้าเอกสารของ Firebase ฉันจึงหยิบไฟล์Server key. ซึ่งเป็นสาเหตุของปัญหา

คุณสามารถหากุญแจที่นี่


ขอบคุณ! ทำงานในกรณีของฉัน ฉันคิดว่ามันเชื่อมต่อกับการใช้เซิร์ฟเวอร์แบ็กเอนด์ของตัวเอง (และเรียกหา "requestServerAuthCode" ใน
GoogleSignIn

5

ฉันประสบปัญหาเดียวกันวิธีแก้ไขคือฉันมี applicationId ในไฟล์ gradle ที่แตกต่างจากชื่อแพ็คเกจในไฟล์รายการของฉัน และฉันใช้ applicationId เพื่อสร้างไฟล์ json ฉันต้องเปลี่ยนชื่อแพ็กเกจเป็นว่า applicationId ของฉันคืออะไรและแก้ไขให้ฉัน


1
ฉันคิดเสมอว่าแพ็คเกจใน Manifest ถูกแทนที่โดย ApplicationId ที่กำหนดใน gradle นั่นไม่ใช่กรณี?
Flo We

3

อีกทางเลือกหนึ่งสำหรับคำตอบที่ให้ไว้ที่นี่คุณสามารถใช้ Firebase Assistant ของ Android Studio เพื่อเพิ่ม SHA-1 ในโปรเจ็กต์ของคุณโดยอัตโนมัติด้วยการคลิกปุ่มบางปุ่ม

ใน Android สตูดิโอไปและคลิกลิงก์ที่ระบุว่าTools > Firebase > Select 'Authentication''Email and password authentication'

สิ่งนี้จะนำเสนอบทแนะนำเล็ก ๆ น้อย ๆ เกี่ยวกับวิธีรวมการตรวจสอบสิทธิ์เข้ากับโครงการของคุณ แต่เนื่องจากคุณอาจทำทุกอย่างเสร็จแล้วเพียงแค่คลิก'Connect to Firebase'ก็เสร็จแล้ว


3

เป็นคำถามเก่า แต่ฉันติดอยู่กับข้อผิดพลาด 10 (DEVELOPER_ERROR) เมื่อเร็ว ๆ นี้เนื่องจากฉันใช้รหัสไคลเอ็นต์ Android ฉันจึงสร้างในคอนโซลนักพัฒนาของ Google

วิธีแก้ปัญหาสำหรับฉันคือใช้ข้อมูลรับรอง Android ในคอนโซลนักพัฒนาของ Google เท่านั้นเพื่อระบุคีย์ SHA ของ apk ของฉันและใช้รหัสไคลเอ็นต์ของข้อมูลรับรองเว็บแอปพลิเคชัน (!) จากคอนโซลนักพัฒนาของ Google ในแอปพลิเคชัน Cordova ของฉัน

config.xml:

<plugin name="cordova-plugin-googleplus" spec="^5.3.0">
    <variable name="REVERSED_CLIENT_ID" value="com.googleusercontent.apps.[web-application-client-id]" />
    <variable name="WEB_APPLICATION_CLIENT_ID" value="[web-application-client-id].apps.googleusercontent.com" />
</plugin>

รหัส:

window.plugins.googleplus.login(
    {
       'webClientId': '[web-application-client-id].apps.googleusercontent.com'
    }, 
    ...

ฉันไม่ได้ใช้ firebase


ขอบคุณมากทำให้ฉันประหยัดเวลาได้มาก การใช้เว็บที่สร้างขึ้นโดยอัตโนมัติช่วยclient idแก้ปัญหา DEVELOPER_ERROR ได้ แม้ว่าสำหรับฉันแล้วมันไม่สมเหตุสมผลและไม่ชัดเจนว่าควรใช้รหัสไคลเอ็นต์อื่น
Myroslav Kolodii

3

คุณอาจสร้างและเพิ่มคีย์ SHA1 ผิด ใช้ขั้นตอนต่อไปนี้เพื่อสร้างคีย์ SHA1 ใน Android studio:

  1. คลิกที่ Gradle (จากแผงด้านขวาคุณจะเห็น Gradle Bar)
  2. คลิกที่รีเฟรช (คลิกที่รีเฟรชจาก Gradle Bar คุณจะเห็นรายการสคริปต์ Gradle ของโครงการของคุณ)
  3. คลิกที่โครงการของคุณ (รายการแบบฟอร์มชื่อโครงการของคุณ (รูท))
  4. คลิกที่ Tasks
  5. คลิกบน Android
  6. ดับเบิลคลิกที่ signReport (คุณจะได้รับ SHA1 และ MD5 ใน Run Bar (บางครั้งจะอยู่ใน Gradle Console))

ตอนนี้เพิ่มคีย์ SHA1 นี้ในโครงการ firebase android ของคุณ


3

โปรดใส่ไฟล์ json ที่ถูกต้องในรูทของโครงการ android
สำหรับข้อมูลเพิ่มเติมอ้างอิงที่นี่: https://coderzpassion.com/android-working-latest-google-plus-login-api/


จำเป็นไหมที่จะต้องเพิ่ม json ที่เราเคยทำมาก่อน?
Gurvinder Singh

ฉันใส่ไฟล์ที่ถูกต้องด้วยการกำหนดค่าที่ถูกต้อง แต่ก็ยังมีข้อผิดพลาด
Bibaswann Bandyopadhyay

1

ข้อผิดพลาดนี้เกิดขึ้นเนื่องจากการตรวจสอบ SHA-1 ของคีย์การดีบักหรือรีลีสไม่รวมอยู่ในคอนโซล firebase / google

สร้างคีย์ก่อนโดยใช้คำสั่งต่อไปนี้:

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

จากนั้นคัดลอก SHA-1 checksum แล้วไปที่:

Firebase Console> โครงการของคุณ> การตั้งค่าของแอป> เพิ่มลายนิ้วมือ


1

สำหรับฉันมันใช้งานได้เมื่อฉันติดตั้งครั้งแรก แต่หยุดลงหลังจากไม่กี่วันของการพัฒนาพร้อมกับข้อความแสดงข้อผิดพลาดดังกล่าว

ฉันได้แก้ไขปัญหาด้วยขั้นตอนเหล่านี้:

  1. ฉันได้เพิ่มลายนิ้วมือ sha-256 ที่ด้านบนของลายนิ้วมือ sha-1 ที่ฉันมีอยู่แล้วในคอนโซล firebase (ไม่แน่ใจว่าต้องทำตามขั้นตอนนี้หรือไม่)
  2. ฉันดาวน์โหลดไฟล์ google-services.json อีกครั้งและแทนที่ไฟล์เก่า
  3. ติดตั้งแอปอีกครั้ง

และมันได้ผล


0

ฉันพบข้อผิดพลาดนี้ในแอป firebase ได้รับการแก้ไขเมื่อฉันเพิ่มrequestIdToken(activity.getString(R.string.default_web_client_id))ส่วนด้านล่าง

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail().requestIdToken(activity.getString(R.string.default_web_client_id))
        .build();

    apiClient = new GoogleApiClient.Builder(activity)
        .addConnectionCallbacks(this)
        .enableAutoManage(activity, this)
        .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
        .build();

    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(apiClient);
    activity.startActivityForResult(signInIntent, RC_GOOGLE_SIGN_IN);

default_web_client_id คืออะไร ฉันจะได้รับจากที่ไหน
Ayman Al-Absi

@ AymanAl-Absi คุณตั้งค่าโครงการของคุณอย่างถูกต้องสำหรับบริการของ Google หรือไม่? ดู: developers.google.com/android/guides/google-services-plugin
Dan Brough

1
@ AymanAl-Absi คุณยังได้รับ "default_web_client_id" จากไฟล์ google-service.json ของคุณในไฟล์นี้คุณจะเห็นแท็ก Client_ID ในแท็กที่คุณคัดลอกเฉพาะข้อความนั้น (client_ID) <[Client_ID] .app.etc>
เจ้าชาย

0

ฉันได้รับข้อผิดพลาดนี้เมื่อฉันอัปเดตไฟล์กำหนดค่า json ด้วยบัญชี Google ใหม่

การถอนการติดตั้งแอปพลิเคชันด้วยตนเองและการติดตั้งแอปใหม่ได้ผลสำหรับฉัน


0

สำหรับใครก็ตามที่ปล่อยแอพคุณต้องมีลายนิ้วมือพิเศษจากไฟล์ที่เก็บคีย์ของคุณ ไม่แปลกใจเลยว่าทำไมฉันถึงได้รับข้อผิดพลาดนี้สำหรับรุ่นที่วางจำหน่ายเท่านั้น จะรับลายนิ้วมือใบรับรองการลงนาม (SHA1) สำหรับ OAuth 2.0 บน Android ได้อย่างไร



0

ฉันแก้ไขปัญหาของฉันโดยใช้server_client_id ที่ถูกต้องในบรรทัดนี้:

String serverClientId = getString(R.string.server_client_id);

ฉันใช้รหัสผิด


0

บริการบางอย่างเช่นการเข้าสู่ระบบ Google จำเป็นต้องเพิ่มลายนิ้วมือ SHA1 ลงในคอนโซล firebase ของคุณ

ฉันพลาดการเพิ่มลายนิ้วมือ SHA ในคอนโซล firebase คุณสามารถทำได้โดยไปที่ FireBase Console> การตั้งค่าโครงการ> ตัวเลือกเพิ่มลายนิ้วมือ

คุณสามารถสร้างลายนิ้วมือ SHA1 ได้ด้วยวิธีง่ายๆhttps://www.youtube.com/watch?v=FczARQ244GE

หลังจากนั้นฉันก็ทำผิดอีกครั้ง

หลังจาก generationg SHA1 คีย์ตามวิธีการข้างต้น ฉันคัดลอกคีย์ SHA1 ที่ไม่ถูกต้องซึ่งเป็นคีย์ที่หมดอายุแล้ว ดังนั้นตรวจสอบให้แน่ใจว่าคีย์ SHA1 ที่คุณกำลังคัดลอกจากเอาต์พุตทางด้านบนเป็นคีย์ที่ถูกต้อง (ตรวจสอบค่าที่ถูกต้องรวมทั้งคีย์ SHA1)

ตรวจสอบให้แน่ใจว่าชื่อแพ็กเกจ (xyz) ที่คุณเพิ่มใน firebase นั้นเหมือนกับที่ใช้ในโค้ด Android ของคุณ

ตรวจสอบให้แน่ใจว่าใช้ AppID ที่ถูกต้อง


0

หลังจากการร้องขอเป็นเวลานานฉันพบวิธีแก้ปัญหา อันที่จริงข้อผิดพลาดนี้Error: Status{statusCode=DEVELOPER_ERROR, resolution=null}จุดที่จะต้องไม่ถูกต้อง SHA-1 หรือชื่อแพคเกจที่ไม่ถูกต้องหรือสิ่งอื่น ?. ในกรณีของฉันฉันเพิ่มdebugคีย์เวิร์ดต่อท้ายชื่อแพ็กเกจcom.sample.app=>com.sample.app.debug


0

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

รายละเอียดเพิ่มเติมภายใต้การรับรองความถูกต้องด้วย Firebase sectoin ที่นี่

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