หากแอปของคุณส่งคำขอ 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 Integrity สำหรับ 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 ไม่พร้อมใช้งานหรือต้องอัปเดต
วิธีแก้ปัญหาที่เป็นไปได้
ขอให้ผู้ใช้ติดตั้ง อัปเดต หรือเปิดใช้ Play Services
ดูเพิ่มเติม
ดูคำขอแบบคลาสสิกได้ที่ APP_NOT_INSTALLED
APP_UID_MISMATCH
(รหัสข้อผิดพลาด -7)
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 สั้นเกินไป โดยต้องมีขนาดอย่างน้อย 16 ไบต์ก่อนการเข้ารหัส Base64
วิธีแก้ปัญหาที่เป็นไปได้
โปรดลองอีกครั้งโดยใช้ Nonce ที่ยาวขึ้น
NONCE_TOO_LONG
(รหัสข้อผิดพลาด -11)
หมายเหตุ: ระบบจะรายงานเฉพาะคำขอแบบคลาสสิกผ่าน IntegrityErrorCode
ความยาวของ Nonce ยาวเกินไป Nonce ต้องมีขนาดไม่เกิน 500 ไบต์ก่อนการเข้ารหัส Base64
วิธีแก้ปัญหาที่เป็นไปได้
โปรดลองอีกครั้งโดยใช้ Nonce ที่สั้นกว่านี้
NONCE_IS_NOT_BASE64
(รหัสข้อผิดพลาด -13)
หมายเหตุ: ระบบจะรายงานเฉพาะคำขอแบบคลาสสิกผ่าน IntegrityErrorCode
Nonce ไม่ได้เข้ารหัสเป็นสตริงฐาน 64 ที่เข้ากันได้กับเว็บและไม่ตัดขึ้นบรรทัดใหม่
วิธีแก้ปัญหาที่เป็นไปได้
ลองอีกครั้งโดยใช้ 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)
หมายเลขโปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่ระบุไม่ถูกต้อง
วิธีแก้ปัญหาที่เป็นไปได้
ใช้หมายเลขโปรเจ็กต์ที่อยู่ในระบบคลาวด์สำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่คุณเปิดใช้ 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
ไม่ถูกต้อง รหัสข้อผิดพลาดนี้ใช้ได้กับคำขอ 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