เราได้จัดหมวดหมู่ข้อผิดพลาดออกเป็นหมวดหมู่กว้างๆ ดังนี้
- การตรวจสอบสิทธิ์
- ลองอีกครั้งได้
- การตรวจสอบความถูกต้อง
- เกี่ยวข้องกับการซิงค์
แม้ว่าหมวดหมู่เหล่านี้จะไม่ครอบคลุมข้อผิดพลาดที่เป็นไปได้ทั้งหมด และบางข้อผิดพลาดอาจเข้าข่ายมากกว่า 1 หมวดหมู่ แต่ก็สามารถใช้เป็นจุดเริ่มต้นในการจัดโครงสร้างการจัดการข้อผิดพลาดของแอปได้ ดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่เฉพาะเจาะจงได้จากแหล่งข้อมูลต่อไปนี้
- ข้อผิดพลาดที่พบบ่อย จะให้รายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่ เฉพาะเจาะจง
- google.rpc.Status สำหรับ รายละเอียดเกี่ยวกับโมเดลข้อผิดพลาดเชิงตรรกะที่ API ใช้
- รหัสข้อผิดพลาด Canonical สำหรับ รายการและคำอธิบายรหัสข้อผิดพลาด Canonical ที่กำหนดโดย gRPC และ HTTP ในบริบทของ Google Ads API
ข้อผิดพลาดในการตรวจสอบสิทธิ์
การตรวจสอบสิทธิ์หมายถึงการที่ผู้ใช้ให้สิทธิ์แอปของคุณในการเข้าถึง Google Ads ในนามของผู้ใช้ ระบบจะจัดการการตรวจสอบสิทธิ์ผ่าน ข้อมูลเข้าสู่ระบบที่สร้างขึ้นโดย โฟลว์ OAuth2.
สาเหตุที่พบบ่อยที่สุดที่ทำให้เกิดข้อผิดพลาดในการตรวจสอบสิทธิ์จากปัจจัยที่อยู่นอกเหนือการควบคุมของคุณคือผู้ใช้ที่ตรวจสอบสิทธิ์แล้วได้เพิกถอนสิทธิ์ที่ให้แอปของคุณดำเนินการในนามของผู้ใช้ เช่น หากแอปของคุณจัดการบัญชี Google Ads แยกต่างหากสำหรับลูกค้าแต่ละราย และตรวจสอบสิทธิ์แยกกันในฐานะลูกค้าแต่ละรายเมื่อจัดการบัญชีของลูกค้ารายนั้น ลูกค้าสามารถเพิกถอนการเข้าถึงของแอปได้ทุกเมื่อ API อาจแสดงข้อผิดพลาด
AuthenticationError.OAUTH_TOKEN_REVOKED โดยตรง หรือออบเจ็กต์ข้อมูลเข้าสู่ระบบในตัว
ในไลบรารีของไคลเอ็นต์อาจแสดงข้อยกเว้นโทเค็นที่เพิกถอนแล้ว
ทั้งนี้ขึ้นอยู่กับเวลาที่เพิกถอนการเข้าถึง ไม่ว่าในกรณีใด หากแอปของคุณมี UI สำหรับลูกค้า แอปอาจขอให้ลูกค้าเปิดใช้โฟลว์ OAuth2 อีกครั้งเพื่อกำหนดสิทธิ์ของแอปในการดำเนินการในนามของลูกค้า
ข้อผิดพลาดที่ลองอีกครั้งได้
ข้อผิดพลาดบางอย่าง เช่น TRANSIENT_ERROR
หรือ INTERNAL_ERROR,
อาจบ่งบอกถึงปัญหาชั่วคราวที่อาจแก้ไขได้โดยการลองคำขออีกครั้งหลังจากหยุดชั่วคราว
สำหรับคำขอที่ผู้ใช้เป็นผู้เริ่ม ให้ใช้กลยุทธ์ในการระบุข้อผิดพลาดใน UI ทันทีและให้ตัวเลือกแก่ผู้ใช้ในการทริกเกอร์การลองอีกครั้ง หรือแอปอาจลองคำขออีกครั้งโดยอัตโนมัติก่อน โดยจะแสดงข้อผิดพลาดใน UI หลังจากลองอีกครั้งถึงจำนวนครั้งสูงสุดหรือเวลาที่ผู้ใช้รอทั้งหมด
สำหรับคำขอที่เริ่มขึ้นในแบ็กเอนด์ แอปควรลองคำขออีกครั้งโดยอัตโนมัติสูงสุดตามจำนวนครั้งที่กำหนด
เมื่อลองคำขออีกครั้ง ให้ใช้นโยบาย Exponential Backoff เช่น หากคุณหยุดชั่วคราว 5 วินาทีก่อนลองอีกครั้งครั้งแรก คุณอาจหยุดชั่วคราว 10 วินาทีหลังจากลองอีกครั้งครั้งที่ 2 และ 20 วินาทีหลังจากลองอีกครั้งครั้งที่ 3 Exponential Backoff ช่วยให้มั่นใจได้ว่าคุณจะไม่เรียก API บ่อยเกินไป
ข้อผิดพลาดในการตรวจสอบความถูกต้อง
ข้อผิดพลาดในการตรวจสอบความถูกต้องบ่งชี้ว่าระบบไม่ยอมรับอินพุตสำหรับการดำเนินการ
เช่น PolicyViolationError,
DateError,
DateRangeError,
StringLengthError และ
UrlFieldError
ข้อผิดพลาดในการตรวจสอบความถูกต้องมักเกิดขึ้นในคำขอที่ผู้ใช้เป็นผู้เริ่ม ซึ่งผู้ใช้ป้อนข้อมูลที่ไม่ถูกต้อง ในกรณีเหล่านี้ คุณควรแสดงข้อความแสดงข้อผิดพลาดที่เหมาะสมแก่ผู้ใช้ตามข้อผิดพลาด API ที่เฉพาะเจาะจงที่คุณได้รับ นอกจากนี้ คุณยังตรวจสอบความถูกต้องของข้อมูลจากผู้ใช้สำหรับข้อผิดพลาดที่พบบ่อยก่อนที่จะทำการเรียก API ได้ ซึ่งจะทำให้แอปตอบสนองได้ดียิ่งขึ้นและทำให้การใช้ API มีประสิทธิภาพมากขึ้น สำหรับคำขอจากแบ็กเอนด์ แอปสามารถเพิ่มการดำเนินการที่ไม่สำเร็จลงในคิวเพื่อให้ผู้ปฏิบัติงานตรวจสอบได้
ข้อผิดพลาดที่เกี่ยวข้องกับการซิงค์
แอป Google Ads หลายแอปใช้ฐานข้อมูลภายในเพื่อจัดเก็บออบเจ็กต์ Google Ads ความท้าทายอย่างหนึ่งของแนวทางนี้คือฐานข้อมูลภายในอาจไม่ซิงค์กับออบเจ็กต์จริงใน Google Ads เช่น ผู้ใช้อาจลบกลุ่มโฆษณาใน Google Ads โดยตรง แต่แอปและฐานข้อมูลภายในไม่ทราบถึงการเปลี่ยนแปลงและยังคงเรียก API ราวกับว่ากลุ่มโฆษณายังคงมีอยู่ ปัญหาการซิงค์เหล่านี้อาจแสดงออกมาเป็นข้อผิดพลาดต่างๆ เช่น DUPLICATE_CAMPAIGN_NAME,
DUPLICATE_ADGROUP_NAME,
AD_NOT_UNDER_ADGROUP,
CANNOT_OPERATE_ON_REMOVED_ADGROUPAD,
และอื่นๆ อีกมากมาย
สำหรับคำขอที่ผู้ใช้เป็นผู้เริ่ม ให้ใช้กลยุทธ์ในการแจ้งเตือนผู้ใช้ถึงปัญหาการซิงค์ที่อาจเกิดขึ้น เปิดใช้การทำงานที่ดึงข้อมูลคลาสที่เกี่ยวข้องของออบเจ็กต์ Google Ads และอัปเดตฐานข้อมูลภายในทันที จากนั้นแจ้งให้ผู้ใช้รีเฟรช UI
สำหรับคำขอแบ็กเอนด์ ข้อผิดพลาดบางอย่างจะให้ข้อมูลเพียงพอเพื่อให้แอปแก้ไขฐานข้อมูลภายในโดยอัตโนมัติและทีละน้อย เช่น
CANNOT_OPERATE_ON_REMOVED_ADGROUPAD
ควรทำให้แอปของคุณทำเครื่องหมายว่าโฆษณาดังกล่าวถูก
นำออกแล้วในฐานข้อมูลภายใน ข้อผิดพลาดที่คุณจัดการด้วยวิธีนี้ไม่ได้อาจทำให้แอปเปิดใช้การทำงานการซิงค์ที่สมบูรณ์ยิ่งขึ้นหรือถูกเพิ่มลงในคิวเพื่อให้ผู้ปฏิบัติงานตรวจสอบ