จัดการรหัสข้อผิดพลาดของ 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. ขอเพิ่มจำนวนคำขอสูงสุดต่อวัน
  2. ลองอีกครั้งโดยใช้ 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