การแชร์ข้อมูลเข้าสู่ระบบในคำขอ API จะช่วยเพิ่มประสิทธิภาพและหลีกเลี่ยงค่าใช้จ่ายในการดำเนินการมากเกินไปซึ่งอาจทำให้เกิดข้อผิดพลาดเกี่ยวกับขีดจำกัดอัตราคำขอ คำแนะนำนี้จะอธิบายวิธีเพิ่มประสิทธิภาพการจัดการข้อมูลเข้าสู่ระบบ OAuth2 เพื่อให้แอปโต้ตอบกับ Google Ads API ได้อย่างมีประสิทธิภาพ
กลยุทธ์การแชร์ข้อมูลเข้าสู่ระบบจะขึ้นอยู่กับว่าแอปของคุณเป็นแบบมัลติเธรดหรือมัลติโปรเซส (หรือแบบกระจาย) แอปที่เป็นทั้งแบบหลายกระบวนการและแบบหลายชุดข้อความภายในแต่ละกระบวนการควรใช้ทั้ง 2 กลยุทธ์ นอกจากนี้ คุณยังปรับกลยุทธ์เหล่านี้สำหรับบัญชี Google Ads หลายบัญชีได้อีกด้วย
หลายเทรด
แต่ละเซสชันหรือผู้ใช้ที่วาดโดยเทรดควรใช้ออบเจ็กต์ข้อมูลเข้าสู่ระบบเดียวกัน นอกจากนี้ การรีเฟรชโทเค็นเพื่อการเข้าถึงยังต้องดำเนินการพร้อมกันเพื่อหลีกเลี่ยงเงื่อนไขการแข่งขัน
ไลบรารีของไคลเอ็นต์ของเราช่วยให้มั่นใจว่าข้อมูลเข้าสู่ระบบเป็นออบเจ็กต์ที่ปลอดภัยของเทรด ซึ่งจะรีเฟรชตัวเองพร้อมกันเมื่อโทเค็นเพื่อการเข้าถึงหมดอายุ ไลบรารีของไคลเอ็นต์แต่ละรายการของเรามีออบเจ็กต์เซสชัน (หรือผู้ใช้) ที่มีข้อมูลรับรองซึ่งจะใช้ซ้ำตลอดอายุ ในการแชร์ข้อมูลเข้าสู่ระบบในชุดข้อความต่างๆ เพียง
คุณสร้างแต่ละเซสชันโดยใช้ข้อมูลเข้าสู่ระบบเดียวกัน ตัวอย่างเช่น ในไลบรารีของไคลเอ็นต์ Java คุณจะสร้างซิงเกิลตัน Credential
และแชร์ในเซสชันทั้งหมด
แบบหลายกระบวนการหรือเผยแพร่
สำหรับกระบวนการแบบหลายกระบวนการหรือกระบวนการแบบกระจาย คุณจะต้องยืนยันข้อมูลเข้าสู่ระบบก่อนจึงจะแชร์ได้ เพื่อให้แน่ใจว่าการประมวลผลหรือเซิร์ฟเวอร์หลายรายการจะไม่พยายามรีเฟรชข้อมูลเข้าสู่ระบบพร้อมกัน ซึ่งส่งผลให้เกิดการส่งคำขอรีเฟรชมากเกินไป คุณควรกำหนดการรีเฟรชให้กับกระบวนการเดียว
ตัวอย่างเช่น งานหรือบริการที่แยกต่างหากอาจมีหน้าที่รับผิดชอบในการรีเฟรชข้อมูลเข้าสู่ระบบเป็นระยะๆ และพุชไปยังที่เก็บข้อมูลที่แชร์โดยกลุ่มเซิร์ฟเวอร์ จากนั้นแต่ละเซิร์ฟเวอร์จะเรียกข้อมูลเข้าสู่ระบบจากที่เก็บข้อมูลได้เมื่อส่งคำขอ API
รีเฟรชงาน
งานการรีเฟรชไม่ควรรอจนกว่าข้อมูลเข้าสู่ระบบปัจจุบันจะหมดอายุก่อนที่จะเริ่มต้นการรีเฟรช การดำเนินการดังกล่าวอาจทำให้แอปหยุดทำงานเนื่องจากไม่มีข้อมูลเข้าสู่ระบบที่ถูกต้อง แต่หากโทเค็นเพื่อการเข้าถึงของข้อมูลเข้าสู่ระบบหมดอายุขณะที่ระบบกำลังประมวลผลคำขอ API คำขอจะยังคงเสร็จสมบูรณ์และจะแสดงผล
เราขอแนะนำให้ติดตามเวลาที่มีการรีเฟรชโทเค็นเพื่อการเข้าถึงครั้งล่าสุด และบังคับให้รีเฟรชหากมีเวลาถึงวันหมดอายุไม่ถึง 5 นาที
หากไม่ทราบว่าโทเค็นเพื่อการเข้าถึงมีการรีเฟรชครั้งล่าสุดเมื่อใด คุณอาจลองรีเฟรชโดยสมมติว่าโทเค็นหมดอายุแล้ว หากโทเค็นเพื่อการเข้าถึงไม่ใกล้หมดเวลา เซิร์ฟเวอร์จะส่งคืนโทเค็นเพื่อการเข้าถึงเดียวกันพร้อมกับมิลลิวินาทีที่เหลืออยู่จนกว่าโทเค็นจะหมดอายุ
ที่เก็บข้อมูล
คุณสามารถใช้พื้นที่เก็บข้อมูลที่มีอยู่ หรือจะใช้ที่เก็บข้อมูลเฉพาะสำหรับการแชร์ข้อมูลเข้าสู่ระบบระหว่างเซิร์ฟเวอร์ก็ได้ โซลูชันรวมถึงเซิร์ฟเวอร์การแคช เช่น Memcached หรือ Infinispan หรือที่เก็บข้อมูล NoSQL เช่น MongoDB
ควรมีการเพิ่มประสิทธิภาพพื้นที่เก็บข้อมูลสำหรับการดำเนินการอ่านที่รวดเร็วเพราะจะมีคำขออ่านมากกว่าการเขียนมาก และข้อมูลเข้าสู่ระบบจะต้องจัดเก็บ อย่างปลอดภัย
เมื่อจัดเก็บข้อมูลเข้าสู่ระบบ คุณควรจัดเก็บ expiry_time
ที่คำนวณแล้ว (ปัจจุบัน + expires_in
) และ refresh_token
ไว้ข้าง access_token
ระบบจะคำนวณ expiry_time
เป็นเวลาของคำขอรีเฟรชaccess_token
บวกเวลา expires_in
พูลเซิร์ฟเวอร์
เซิร์ฟเวอร์หรือกระบวนการแต่ละรายการในพูลจะเรียกข้อมูลเข้าสู่ระบบล่าสุดจากพื้นที่เก็บข้อมูลก่อนส่งคำขอ ตราบใดที่งานการรีเฟรชทำงาน อย่างถูกต้อง ข้อมูลเข้าสู่ระบบก็จะใช้งานได้ อย่างไรก็ตาม หากงานการรีเฟรชหรือพื้นที่เก็บข้อมูลล้มเหลว คุณควรมีกลไกสำรอง
หากเซิร์ฟเวอร์หรือกระบวนการไม่สามารถรับข้อมูลเข้าสู่ระบบจากที่เก็บข้อมูลได้ หรือหากข้อมูลเข้าสู่ระบบหมดอายุ เซิร์ฟเวอร์ควรรีเฟรชข้อมูลเข้าสู่ระบบของตนเองเพื่อให้แอปทำงานกับ API ต่อไปได้จนกว่าปัญหาจะได้รับการแก้ไข
การจัดการข้อมูลเข้าสู่ระบบสำหรับหลายบัญชี
คุณจะใช้ข้อมูลเข้าสู่ระบบที่สร้างขึ้นสำหรับบัญชีดูแลจัดการ Google Ads เพื่อเข้าถึงบัญชีย่อยทั้งหมดได้ ดังนั้น สำหรับผู้ใช้ที่มีลำดับชั้นบัญชีดูแลจัดการเดียว การสร้างข้อมูลเข้าสู่ระบบสำหรับบัญชีดูแลจัดการระดับบนสุดที่นำไปใช้กับบัญชี Google Ads ทั้งหมดที่อยู่ภายใต้บัญชีดูแลจัดการนั้นก็ถือว่าเพียงพอแล้ว
หากแอปจำเป็นต้องเข้าถึงบัญชี Google Ads ที่ไม่เกี่ยวข้องซึ่งกันและกันในลำดับชั้นของบัญชีดูแลจัดการใดๆ คุณควรสร้างและรักษาข้อมูลเข้าสู่ระบบที่แตกต่างกันสำหรับบัญชีต่างๆ เช่น สำหรับบัญชีลูกค้า Google Ads แต่ละบัญชีที่คุณเข้าถึง หรือบัญชีดูแลจัดการระดับบนสุดแต่ละบัญชีในลำดับชั้นอิสระที่คุณเข้าถึง
คุณสามารถใช้กลยุทธ์เดียวกันสำหรับแอปแบบหลายชุดข้อความหรือมัลติโปรเซส / จัดจำหน่ายโดยมีการปรับเปลี่ยนเล็กน้อย เมื่อใช้พื้นที่เก็บข้อมูลที่แชร์ ตัวระบุบัญชีต้องจัดทำดัชนีข้อมูลเข้าสู่ระบบด้วย customerId
เพื่อให้แน่ใจว่าข้อมูลเข้าสู่ระบบเชื่อมโยงกับบัญชีที่ถูกต้อง
นอกจากนี้ งานรีเฟรชควรรีเฟรชข้อมูลเข้าสู่ระบบทั้งหมดเสมอ หากลิงก์บัญชีใหม่แล้ว คุณอาจต้องทริกเกอร์งานการรีเฟรช
และสุดท้าย ในแอปที่มีหลายเทรด คุณควรแชร์เฉพาะออบเจ็กต์ข้อมูลเข้าสู่ระบบข้ามเทรดที่ทำงานในบัญชีที่มีออบเจ็กต์ข้อมูลเข้าสู่ระบบเชื่อมโยงอยู่