จัดการรหัสข้อผิดพลาดของ Play Integrity API

หากแอปส่งคำขอ Play Integrity API และการเรียกใช้ไม่สำเร็จ แอปจะได้รับรหัสข้อผิดพลาด ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นได้จากหลายสาเหตุ เช่น ปัญหาด้านสิ่งแวดล้อม เช่น การเชื่อมต่อเครือข่ายไม่ดี ปัญหาเกี่ยวกับการ ผสานรวม API หรือกิจกรรมที่เป็นอันตรายและการโจมตีที่ใช้งานอยู่ ประเภทของรหัสข้อผิดพลาดที่แสดงจะขึ้นอยู่กับประเภทของคำขอ ดังนี้

กลยุทธ์การลองใหม่

ใช้ Exponential Backoff สำหรับการดำเนินการ Play Integrity ที่ เกิดขึ้นในเบื้องหลังและไม่ส่งผลต่อประสบการณ์ของผู้ใช้ขณะที่ผู้ใช้ อยู่ในเซสชัน

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

หลังจากความล้มเหลวครั้งแรก ให้เริ่มด้วยการหน่วงเวลาเริ่มต้น 5 วินาทีก่อน ลองอีกครั้ง

ใช้กลยุทธ์การลองใหม่โดยมีจำนวนครั้งสูงสุดเป็นเงื่อนไขการออก โดยใช้การหน่วงเวลาที่เพิ่มขึ้นแบบเอ็กซ์โปเนนเชียลในแต่ละครั้ง (10 วินาที 20 วินาที)

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

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

ค่ารหัสข้อผิดพลาดสำหรับไลบรารี Java

IntegrityErrorCode StandardIntegrityErrorCode
-1 API_NOT_AVAILABLE API_NOT_AVAILABLE
-2 PLAY_STORE_NOT_FOUND PLAY_STORE_NOT_FOUND
-3 NETWORK_ERROR NETWORK_ERROR
-4 PLAY_STORE_ACCOUNT_NOT_FOUND
-5 APP_NOT_INSTALLED APP_NOT_INSTALLED
-6 PLAY_SERVICES_NOT_FOUND PLAY_SERVICES_NOT_FOUND
-7 APP_UID_MISMATCH APP_UID_MISMATCH
-8 TOO_MANY_REQUESTS TOO_MANY_REQUESTS
-9 CANNOT_BIND_TO_SERVICE CANNOT_BIND_TO_SERVICE
-10 NONCE_TOO_SHORT
-11 NONCE_TOO_LONG
-12 GOOGLE_SERVER_UNAVAILABLE GOOGLE_SERVER_UNAVAILABLE
-13 NONCE_IS_NOT_BASE64
-14 PLAY_STORE_VERSION_OUTDATED PLAY_STORE_VERSION_OUTDATED
-15 PLAY_SERVICES_VERSION_OUTDATED PLAY_SERVICES_VERSION_OUTDATED
-16 CLOUD_PROJECT_NUMBER_IS_INVALID CLOUD_PROJECT_NUMBER_IS_INVALID
-17 CLIENT_TRANSIENT_ERROR REQUEST_HASH_TOO_LONG
-18 CLIENT_TRANSIENT_ERROR
-19 INTEGRITY_TOKEN_PROVIDER_INVALID
-100 INTERNAL_ERROR INTERNAL_ERROR

ค่ารหัสข้อผิดพลาดเพิ่มเติมสำหรับไลบรารีเนทีฟ

IntegrityErrorCode StandardIntegrityErrorCode
-100 INTEGRITY_INTERNAL_ERROR STANDARD_INTEGRITY_INTERNAL_ERROR
-101 INTEGRITY_INITIALIZATION_NEEDED STANDARD_INTEGRITY_INITIALIZATION_NEEDED
-102 INTEGRITY_INITIALIZATION_FAILED STANDARD_INTEGRITY_INITIALIZATION_FAILED
-103 INTEGRITY_INVALID_ARGUMENT STANDARD_INTEGRITY_INVALID_ARGUMENT

รหัสข้อผิดพลาดที่ลองอีกครั้งได้

บางครั้งสาเหตุของข้อผิดพลาดเหล่านี้เกิดจากสภาวะชั่วคราว ดังนั้นคุณ ควรลองโทรอีกครั้ง

NETWORK_ERROR (รหัสข้อผิดพลาด -3)

ข้อผิดพลาดนี้แสดงว่าเกิดปัญหาเกี่ยวกับการเชื่อมต่อเครือข่าย ระหว่างอุปกรณ์กับระบบ Play

ความละเอียดที่เป็นไปได้

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

ดูเพิ่มเติม

NETWORK_ERROR สำหรับคำขอแบบคลาสสิก

TOO_MANY_REQUESTS (รหัสข้อผิดพลาด -8)

แอปที่เรียกใช้ส่งคำขอไปยัง API มากเกินไปและถูกจำกัดอัตรา หรือแอปของคุณใช้โควต้าคำขอรายวันเกิน

ความละเอียดที่เป็นไปได้

  1. ลองอีกครั้งโดยใช้ Exponential Backoff
  2. ขอเพิ่มจำนวนคำขอสูงสุดต่อวัน

ดูเพิ่มเติม

TOO_MANY_REQUESTS สำหรับคำขอแบบคลาสสิก

GOOGLE_SERVER_UNAVAILABLE (รหัสข้อผิดพลาด -12)

ข้อผิดพลาดของเซิร์ฟเวอร์ภายในของ Google ที่ไม่ทราบสาเหตุ

ความละเอียดที่เป็นไปได้

ลองอีกครั้งโดยใช้ Exponential Backoff โปรดรายงานข้อบกพร่องหากการทดสอบล้มเหลวอย่างสม่ำเสมอ

ดูเพิ่มเติม

GOOGLE_SERVER_UNAVAILABLE สำหรับคำขอแบบคลาสสิก

CLIENT_TRANSIENT_ERROR (รหัสข้อผิดพลาด -18)

เกิดข้อผิดพลาดชั่วคราวในอุปกรณ์ไคลเอ็นต์

สําหรับคําขอ API มาตรฐาน ระบบรองรับฟีเจอร์นี้ตั้งแต่เวอร์ชัน 1.3.0 ของ ไลบรารี Play Integrity API สําหรับ Kotlin และ Java ปลั๊กอินความสมบูรณ์ของ Google Play สําหรับ Unity 1.3.0 ขึ้นไป และ Play Core Native SDK 1.13.0 ขึ้นไป

ความละเอียดที่เป็นไปได้

ลองอีกครั้งโดยใช้ Exponential Backoff

ดูเพิ่มเติม

CLIENT_TRANSIENT_ERROR สำหรับคำขอแบบคลาสสิก

หมายเหตุ: เมื่อรายงานขณะใช้คำขอ API แบบคลาสสิก ค่าที่ส่งคืน คือ -17

INTERNAL_ERROR (รหัสข้อผิดพลาด -100)

ข้อผิดพลาดภายในที่ไม่รู้จัก

ความละเอียดที่เป็นไปได้

ลองอีกครั้งโดยใช้ Exponential Backoff โปรดรายงานข้อบกพร่องหากการดำเนินการล้มเหลวอย่างต่อเนื่อง

ดูเพิ่มเติม

INTERNAL_ERROR สำหรับคำขอแบบคลาสสิก

STANDARD_INTEGRITY_INTERNAL_ERROR (รหัสข้อผิดพลาด -100)

ข้อผิดพลาดภายในที่ไม่รู้จัก

ความละเอียดที่เป็นไปได้

ลองอีกครั้งโดยใช้ Exponential Backoff โปรดรายงานข้อบกพร่องหากการดำเนินการล้มเหลวอย่างต่อเนื่อง

ดูเพิ่มเติม

ดู INTEGRITY_INTERNAL_ERROR สำหรับคำขอแบบคลาสสิก

STANDARD_INTEGRITY_INITIALIZATION_FAILED (รหัสข้อผิดพลาด -102)

เกิดข้อผิดพลาดในการเริ่มต้น Standard Integrity API

ความละเอียดที่เป็นไปได้

ลองอีกครั้งโดยใช้ Exponential Backoff โปรดรายงานข้อบกพร่องหากการดำเนินการล้มเหลวอย่างต่อเนื่อง

ดูเพิ่มเติม

ดู INTEGRITY_INITIALIZATION_FAILED สำหรับคำขอแบบคลาสสิก

รหัสข้อผิดพลาดที่ลองอีกครั้งไม่ได้

การลองใหม่โดยอัตโนมัติไม่น่าจะช่วยได้ในกรณีเหล่านี้ อย่างไรก็ตาม การลองอีกครั้งด้วยตนเอง อาจช่วยได้หากผู้ใช้แก้ไขเงื่อนไขที่ทำให้เกิดปัญหา เช่น หากผู้ใช้อัปเดต Play Store เป็นเวอร์ชันที่รองรับ การลองดำเนินการครั้งแรกอีกครั้งด้วยตนเองอาจได้ผล

API_NOT_AVAILABLE (รหัสข้อผิดพลาด -1)

Play Store เวอร์ชันที่ติดตั้งในอุปกรณ์อาจเป็นเวอร์ชันเก่าและ Integrity API อาจไม่พร้อมใช้งาน อีกกรณีหนึ่งที่เป็นไปได้คือไม่ได้เปิดใช้ Integrity API ใน Google Play Console

ความละเอียดที่เป็นไปได้

  • ตรวจสอบว่าได้เปิดใช้ Integrity API ใน Google Play Console แล้ว
  • ขอให้ผู้ใช้อัปเดต Play Store

ดูเพิ่มเติม

ดู API_NOT_AVAILABLE สำหรับคำขอแบบคลาสสิก

PLAY_STORE_NOT_FOUND (รหัสข้อผิดพลาด -2)

ไม่พบแอป Play Store อย่างเป็นทางการในอุปกรณ์

ความละเอียดที่เป็นไปได้

ขอให้ผู้ใช้ติดตั้งหรือเปิดใช้ Google Play Store

ดูเพิ่มเติม

ดู PLAY_STORE_NOT_FOUND สำหรับคำขอแบบคลาสสิก

PLAY_STORE_ACCOUNT_NOT_FOUND (รหัสข้อผิดพลาด -4)

หมายเหตุ: ระบบจะรายงานเฉพาะคำขอแบบคลาสสิกผ่าน IntegrityErrorCode

ไม่พบบัญชี Play Store ในอุปกรณ์ โปรดทราบว่าตอนนี้ Play Integrity API รองรับคำขอที่ไม่ผ่านการตรวจสอบสิทธิ์แล้ว รหัสข้อผิดพลาดนี้ใช้สำหรับ Play Store เวอร์ชันเก่าที่ไม่มีการรองรับเท่านั้น

ความละเอียดที่เป็นไปได้

ขอให้ผู้ใช้อัปเดตและลงชื่อเข้าใช้ Google Play Store

APP_NOT_INSTALLED (รหัสข้อผิดพลาด -5)

ไม่ได้ติดตั้งแอปโทร เกิดข้อผิดพลาด (อาจเป็นการโจมตี)

ความละเอียดที่เป็นไปได้

ดำเนินการไม่ได้ ถือว่าผลลัพธ์เป็นกรณีที่ไคลเอ็นต์ไม่ผ่านการตรวจสอบความสมบูรณ์ทั้งหมด

ดูเพิ่มเติม

ดู APP_NOT_INSTALLED สำหรับคำขอแบบคลาสสิก

PLAY_SERVICES_NOT_FOUND (รหัสข้อผิดพลาด -6)

บริการ Play ไม่พร้อมใช้งานหรือต้องอัปเดต

ความละเอียดที่เป็นไปได้

ขอให้ผู้ใช้ติดตั้ง อัปเดต หรือเปิดใช้บริการ Google Play

ดูเพิ่มเติม

ดู APP_NOT_INSTALLED สำหรับคำขอแบบคลาสสิก

APP_UID_MISMATCH (รหัสข้อผิดพลาด -7)

UID (รหัสผู้ใช้) ของแอปที่เรียกใช้ไม่ตรงกับ UID จาก Package Manager

ความละเอียดที่เป็นไปได้

ดำเนินการไม่ได้ ถือว่าผลลัพธ์เป็นกรณีที่ไคลเอ็นต์ไม่ผ่านการตรวจสอบความสมบูรณ์ทั้งหมด

ดูเพิ่มเติม

ดู APP_UID_MISMATCH สำหรับคำขอแบบคลาสสิก

CANNOT_BIND_TO_SERVICE (รหัสข้อผิดพลาด -9)

การเชื่อมโยงกับบริการใน Play Store ไม่สำเร็จ ซึ่งอาจเกิดจากการติดตั้ง Play Store เวอร์ชันเก่าในอุปกรณ์

ความละเอียดที่เป็นไปได้

ขอให้ผู้ใช้อัปเดต Google Play Store

ดูเพิ่มเติม

ดู CANNOT_BIND_TO_SERVICE สำหรับคำขอแบบคลาสสิก

NONCE_TOO_SHORT (รหัสข้อผิดพลาด -10)

หมายเหตุ: ระบบจะรายงานเฉพาะคำขอแบบคลาสสิกผ่าน IntegrityErrorCode

ความยาวของ Nonce สั้นเกินไป Nonce ต้องมีขนาดอย่างน้อย 16 ไบต์ก่อนการเข้ารหัส Base64

ความละเอียดที่เป็นไปได้

ลองอีกครั้งโดยใช้ Nonce ที่ยาวขึ้น

NONCE_TOO_LONG (รหัสข้อผิดพลาด -11)

หมายเหตุ: ระบบจะรายงานเฉพาะคำขอแบบคลาสสิกผ่าน IntegrityErrorCode

ความยาวของ Nonce ยาวเกินไป Nonce ต้องมีขนาดไม่เกิน 500 ไบต์ก่อนการเข้ารหัส base64

ความละเอียดที่เป็นไปได้

โปรดลองอีกครั้งโดยใช้ Nonce ที่สั้นกว่า

NONCE_IS_NOT_BASE64 (รหัสข้อผิดพลาด -13)

หมายเหตุ: ระบบจะรายงานเฉพาะคำขอแบบคลาสสิกผ่าน IntegrityErrorCode

Nonce ไม่ได้เข้ารหัสเป็นสตริง Web-safe base64 ที่ไม่มีการตัดคำ

ความละเอียดที่เป็นไปได้

โปรดลองอีกครั้งโดยใช้ Nonce ในรูปแบบที่ถูกต้อง

PLAY_STORE_VERSION_OUTDATED (รหัสข้อผิดพลาด -14)

ต้องอัปเดตแอป Google Play Store

ความละเอียดที่เป็นไปได้

ขอให้ผู้ใช้อัปเดต Google Play Store

ดูเพิ่มเติม

ดู PLAY_STORE_VERSION_OUTDATED สำหรับคำขอแบบคลาสสิก

PLAY_SERVICES_VERSION_OUTDATED (รหัสข้อผิดพลาด -15)

จำเป็นต้องอัปเดตบริการ Google Play

ความละเอียดที่เป็นไปได้

ขอให้ผู้ใช้อัปเดตบริการ Google Play

ดูเพิ่มเติม

ดู PLAY_SERVICES_VERSION_OUTDATED สำหรับคำขอแบบคลาสสิก

CLOUD_PROJECT_NUMBER_IS_INVALID (รหัสข้อผิดพลาด -16)

หมายเลขโปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่ระบุไม่ถูกต้อง

ความละเอียดที่เป็นไปได้

ใช้หมายเลขโปรเจ็กต์ Cloud สำหรับโปรเจ็กต์ Cloud ที่คุณเปิดใช้ Play Integrity API

ดูเพิ่มเติม

ดู CLOUD_PROJECT_NUMBER_IS_INVALID สำหรับคำขอแบบคลาสสิก

REQUEST_HASH_TOO_LONG (รหัสข้อผิดพลาด -17)

หมายเหตุ: ระบบจะรายงานเฉพาะเมื่อใช้คำขอมาตรฐานผ่าน StandardIntegrityErrorCode

requestHash ที่ระบุยาวเกินไป requestHash ต้องมีความยาวไม่เกิน 500 อักขระ

ความละเอียดที่เป็นไปได้

ลองอีกครั้งโดยใช้ requestHash ที่สั้นกว่า

INTEGRITY_TOKEN_PROVIDER_INVALID (รหัสข้อผิดพลาด -19)

หมายเหตุ: ระบบจะรายงานเฉพาะคำขอมาตรฐานผ่าน StandardIntegrityErrorCode

StandardIntegrityTokenProvider ใช้ไม่ได้อีกต่อไป กรณีนี้อาจเกิดขึ้นเนื่องจากผู้ให้บริการโทเค็นหมดอายุหรือผู้ใช้ล้างข้อมูลของแอป Play Store ซึ่งจะนำผู้ให้บริการโทเค็นออก

รหัสข้อผิดพลาดนี้ใช้ได้เฉพาะกับคำขอ Standard API ซึ่งรองรับในไลบรารีเวอร์ชัน 1.3.0 สำหรับภาษาโปรแกรม Kotlin และ Java, ปลั๊กอินความสมบูรณ์ของ Google Play สำหรับ Unity 1.3.0 ขึ้นไป และ Play Core Native SDK 1.13.0 ขึ้นไป

ความละเอียดที่เป็นไปได้

ขอผู้ให้บริการโทเค็นความสมบูรณ์รายใหม่

STANDARD_INTEGRITY_INITIALIZATION_NEEDED (รหัสข้อผิดพลาด -101)

ไม่ได้เริ่มต้น StandardIntegrityManager

ความละเอียดที่เป็นไปได้

โทรหา StandardIntegrityManager_init() ก่อน

ดูเพิ่มเติม

ดู INTEGRITY_INITIALIZATION_NEEDED สำหรับคำขอแบบคลาสสิก

STANDARD_INTEGRITY_INVALID_ARGUMENT (รหัสข้อผิดพลาด -103)

ส่งอาร์กิวเมนต์ที่ไม่ถูกต้องไปยัง Standard Integrity API

ความละเอียดที่เป็นไปได้

โปรดลองอีกครั้งโดยใช้อาร์กิวเมนต์ที่ถูกต้อง

ดูเพิ่มเติม

ดู INTEGRITY_INVALID_ARGUMENT สำหรับคำขอแบบคลาสสิก