หากแอปส่งคำขอ Play Integrity API และการเรียกใช้ไม่สำเร็จ แอปจะได้รับรหัสข้อผิดพลาด ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นได้จากหลายสาเหตุ เช่น ปัญหาด้านสิ่งแวดล้อม เช่น การเชื่อมต่อเครือข่ายไม่ดี ปัญหาเกี่ยวกับการ ผสานรวม API หรือกิจกรรมที่เป็นอันตรายและการโจมตีที่ใช้งานอยู่ ประเภทของรหัสข้อผิดพลาดที่แสดงจะขึ้นอยู่กับประเภทของคำขอ ดังนี้
- คำขอมาตรฐาน: API จะแสดง StandardIntegrityErrorCode
- คำขอแบบคลาสสิก: API จะแสดง IntegrityErrorCode
กลยุทธ์การลองใหม่
ใช้ Exponential Backoff สำหรับการดำเนินการ Play Integrity ที่ เกิดขึ้นในเบื้องหลังและไม่ส่งผลต่อประสบการณ์ของผู้ใช้ขณะที่ผู้ใช้ อยู่ในเซสชัน
เช่น คุณควรใช้การดำเนินการนี้เมื่อรับทราบการซื้อใหม่ เนื่องจากสามารถดำเนินการในเบื้องหลังได้ และไม่จำเป็นต้องรับทราบแบบเรียลไทม์หากเกิดข้อผิดพลาด
หลังจากความล้มเหลวครั้งแรก ให้เริ่มด้วยการหน่วงเวลาเริ่มต้น 5 วินาทีก่อน ลองอีกครั้ง
ใช้กลยุทธ์การลองใหม่โดยมีจำนวนครั้งสูงสุดเป็นเงื่อนไขการออก โดยใช้การหน่วงเวลาที่เพิ่มขึ้นแบบเอ็กซ์โปเนนเชียลในแต่ละครั้ง (10 วินาที 20 วินาที)
ขณะพยายามลองอีกครั้ง ให้ตรวจสอบการเชื่อมต่อเครือข่ายและอย่า โหลดอุปกรณ์มากเกินไป
หากยังคงเห็นข้อผิดพลาดหลังจากพยายามลองอีกครั้ง 3 ครั้ง ให้ถือว่าผลลัพธ์เป็น หากไคลเอ็นต์ไม่ผ่านการตรวจสอบความสมบูรณ์ทั้งหมด ข้อผิดพลาดอาจเกิดจากหลายสาเหตุ ซึ่งรวมถึงแต่ไม่จำกัดเพียงอุปกรณ์ทำงานหนักเกินไป ปัญหาการเชื่อมต่อเครือข่าย หรือความพยายามของผู้โจมตี
ค่ารหัสข้อผิดพลาดสำหรับไลบรารี Java
ค่ารหัสข้อผิดพลาดเพิ่มเติมสำหรับไลบรารีเนทีฟ
รหัสข้อผิดพลาดที่ลองอีกครั้งได้
บางครั้งสาเหตุของข้อผิดพลาดเหล่านี้เกิดจากสภาวะชั่วคราว ดังนั้นคุณ ควรลองโทรอีกครั้ง
NETWORK_ERROR
(รหัสข้อผิดพลาด -3)
ข้อผิดพลาดนี้แสดงว่าเกิดปัญหาเกี่ยวกับการเชื่อมต่อเครือข่าย ระหว่างอุปกรณ์กับระบบ Play
ความละเอียดที่เป็นไปได้
หากต้องการกู้คืน ให้ขอให้ผู้ใช้ตรวจสอบการเชื่อมต่อเครือข่าย และใช้การลองใหม่แบบง่ายๆ หรือการหยุดพักแบบทวีคูณ ทั้งนี้ขึ้นอยู่กับการดำเนินการที่ทำให้เกิดข้อผิดพลาด
ดูเพิ่มเติม
NETWORK_ERROR
สำหรับคำขอแบบคลาสสิก
TOO_MANY_REQUESTS
(รหัสข้อผิดพลาด -8)
แอปที่เรียกใช้ส่งคำขอไปยัง API มากเกินไปและถูกจำกัดอัตรา หรือแอปของคุณใช้โควต้าคำขอรายวันเกิน
ความละเอียดที่เป็นไปได้
- ลองอีกครั้งโดยใช้ Exponential Backoff
- ขอเพิ่มจำนวนคำขอสูงสุดต่อวัน
ดูเพิ่มเติม
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
สำหรับคำขอแบบคลาสสิก