تؤدي مشاركة بيانات الاعتماد في طلبات واجهة برمجة التطبيقات إلى تحسين الأداء وتجنُّب النفقات العامة المفرطة التي يمكن أن تؤدي إلى حدوث أخطاء في معدّل الحدّ الأقصى. يوضّح هذا الدليل كيفية تحسين إدارة بيانات اعتماد OAuth2 حتى يتمكّن تطبيقك من التفاعل بكفاءة مع Google Ads API.
تعتمد استراتيجية مشاركة بيانات الاعتماد على ما إذا كان تطبيقك multithreaded أو متعدد العمليات (أو موزّع). يجب أن يستخدم التطبيق الذي يتضمّن عمليات متعددة وخيوطًا متعددة داخل كل عملية كلا الاستراتيجيتين. يمكن أيضًا تكييف هذه الاستراتيجيات لتناسب حسابات متعدّدة على "إعلانات Google".
متعددة سلاسل التعليمات
يجب أن تستخدم كل جلسة أو مستخدم يتم استدعاؤه بواسطة سلسلة التعليمات البرمجية كائن بيانات الاعتماد نفسه. يجب أيضًا إعادة تحميل رمز الدخول المميز بشكل متزامن لتجنُّب حالات التزامن.
تضمن مكتبات البرامج للعملاء أنّ بيانات الاعتماد هي عنصر آمن للاستخدام المتزامن، ويتم تجديدها بشكل متزامن عند انتهاء صلاحية رمز الدخول. يحتوي كل من مكتبات العملاء لدينا على عنصر جلسة (أو مستخدم) يتضمّن بيانات اعتماد يعيد استخدامها طوال مدة نشاطه. لمشاركة بيانات الاعتماد بين سلاسل المحادثات، ما عليك سوى إنشاء كل جلسة باستخدام بيانات الاعتماد نفسها. على سبيل المثال، في مكتبة برامج Java، يمكنك إنشاء Credential
singleton ومشاركته في جميع الجلسات.
متعددة العمليات أو موزَّعة
بالنسبة إلى العمليات المتعددة أو الموزّعة، عليك تخزين بيانات الاعتماد قبل أن تتمكّن من مشاركتها. لضمان عدم محاولة عمليات أو خوادم متعددة إعادة تحميل بيانات الاعتماد في الوقت نفسه، ما يؤدي إلى طلبات إعادة تحميل مفرطة، عليك تعيين عملية إعادة التحميل إلى عملية واحدة.
على سبيل المثال، يمكن أن تكون هناك مهمة أو خدمة منفصلة مسؤولة عن إعادة تحميل بيانات الاعتماد بشكل دوري وإرسالها بشكل استباقي إلى مخزن بيانات مشترك بين مجموعة من الخوادم. يمكن لكل خادم بعد ذلك استرداد بيانات الاعتماد من مخزن البيانات عند تقديم طلب إلى واجهة برمجة التطبيقات.
إعادة تحميل مهمة
يجب ألا تنتظر مهمة التحديث إلى أن تنتهي صلاحية بيانات الاعتماد الحالية قبل بدء عملية التحديث. قد يؤدي ذلك إلى توقّف التطبيق بسبب عدم توفّر بيانات اعتماد صالحة، ولكن إذا انتهت صلاحية رمز الدخول الخاص ببيانات الاعتماد أثناء معالجة طلب واجهة برمجة التطبيقات، سيتم إكمال الطلب وسيتم عرض النتائج.
ننصحك بتتبُّع الوقت الذي تم فيه آخر مرة إعادة تحميل رمز الدخول، وإعادة تحميله إذا كان متبقيًا أقل من 5 دقائق على انتهاء صلاحيته.
إذا كنت لا تعرف آخر مرة تم فيها إعادة إنشاء رمز الدخول، يمكنك محاولة إعادة إنشائه بافتراض أنّ صلاحيته انتهت. إذا لم يكن رمز الدخول على وشك انتهاء الصلاحية، يعرض الخادم رمز الدخول نفسه، بالإضافة إلى عدد الملّي ثانية المتبقية حتى تنتهي صلاحية الرمز.
مخزن البيانات
يمكنك الاستفادة من مخزن بيانات حالي أو نشر مخزن بيانات مخصّص لمشاركة بيانات الاعتماد بين الخوادم. وتشمل الحلول خوادم التخزين المؤقت، مثل Memcached أو Infinispan، أو مخازن بيانات NoSQL، مثل MongoDB.
يجب تحسين مخزن البيانات لعمليات القراءة السريعة لأنّ عدد طلبات القراءة سيكون أكبر بكثير من عدد طلبات الكتابة. ويجب تخزين بيانات الاعتماد بأمان.
عند تخزين بيانات الاعتماد، يجب تخزين قيمة expiry_time
المحسوبة (الوقت الحالي + expires_in
) وrefresh_token
بجانب access_token
. يتم احتساب
expiry_time
على أنّه وقت طلب إعادة تحميل access_token
بالإضافة إلى وقت expires_in
.
مجموعة الخوادم
يستردّ كل خادم أو عملية في المجموعة أحدث بيانات اعتماد من مخزن البيانات قبل تقديم طلب. ستكون بيانات الاعتماد صالحة طالما أنّ مهمة إعادة التحميل تعمل بشكل سليم. ومع ذلك، إذا تعذّر تنفيذ مهمة إعادة التحميل أو تخزين البيانات، يجب أن تتوفّر لديك آلية احتياطية.
إذا تعذّر على خادم أو عملية الحصول على بيانات اعتماد من مخزن البيانات، أو إذا انتهت صلاحية بيانات الاعتماد، على الخادم إعادة تحميل بيانات الاعتماد الخاصة به للسماح للتطبيق بمواصلة العمل مع واجهة برمجة التطبيقات إلى أن يتم حل المشكلة.
إدارة بيانات الاعتماد لحسابات متعددة
يمكن استخدام بيانات الاعتماد التي تم إنشاؤها لحساب إداري على "إعلانات Google" للوصول إلى جميع حساباته الفرعية. وبالتالي، بالنسبة إلى المستخدمين الذين لديهم تدرّج هرمي لحساب إداري واحد، يكفي عادةً إنشاء بيانات اعتماد للحساب الإداري ذي المستوى الأعلى لاستخدامها في جميع حسابات "إعلانات Google" التابعة له.
إذا كان تطبيقك يحتاج إلى الوصول إلى حسابات "إعلانات Google" غير المرتبطة ببعضها البعض في أي تسلسل هرمي للحسابات الإدارية، عليك إنشاء بيانات اعتماد مختلفة والاحتفاظ بها لحسابات مختلفة، مثل كل حساب عميل على "إعلانات Google" يمكنك الوصول إليه، أو كل حساب إداري ذي مستوى أعلى في التسلسلات الهرمية المستقلة التي يمكنك الوصول إليها.
يمكنك اتّباع الاستراتيجيات نفسها للتطبيقات multithreaded أو
المتعددة العمليات / الموزّعة مع إجراء تعديلات بسيطة. عند استخدام مساحة تخزين بيانات مشتركة، يجب فهرسة بيانات الاعتماد حسب معرّف الحساب customerId
لضمان ربط بيانات الاعتماد بالحساب الصحيح.
بالإضافة إلى ذلك، يجب أن تحافظ مهمة إعادة التحميل على تحديث جميع بيانات الاعتماد. في حال ربط حساب جديد، قد تحتاج إلى بدء مهمة إعادة التحميل.
وأخيرًا، في التطبيقات المتعددة سلاسل التنفيذ، يجب ألا تتم مشاركة عنصر بيانات الاعتماد إلا بين سلاسل التنفيذ التي تعمل على الحساب المرتبط بعنصر بيانات الاعتماد.