يمكنك استخدام الطلبات غير المتزامنة لإنشاء الإعلانات وإرسال العديد من طلبات الإعلانات دون الحاجة إلى تجميعها. وحدد عنوان URL للاستدعاء بعد اكتمال الطلبات، أو تحقق من حالة الطلب. ويمكنك الرجوع إلى الإعلان، المرجع.
علمًا بأن الطريقة الأكثر فعالية لإدارة الإعلانات هي عن طريق استخدام الطلبات المُجمعة. ويمكنك استخدامها في تنفيذ بعض الطلبات الأكثر شيوعًا.
على سبيل المثال، يمكنك الحصول على حالة مجموعة الطلبات غير المتزامنة:
curl -G \
-d 'fields=name,success_count,error_count,is_completed' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/<REQUEST_SET_ID>
يؤدي ذلك إلى إرجاع الحالة العامة الخاصة بمجموعة الطلبات غير المتزامنة باعتبارها كائنًا بلغة JSON. ولا تظهر كل الحقول افتراضيًا. وإذا كنت تريد أن يتضمن استعلامك حقولًا غير افتراضية، فحددها في fields
، مثل fields=id,owner_id,name,total_count,success_count,error_count,is_completed
.
الاسم | الوصف |
---|---|
النوع: int (عدد صحيح) | يتم العرض افتراضيًا. يمثل المعرف |
النوع: int (عدد صحيح) | يتم العرض افتراضيًا. يمثل الكائن الذي يتضمن مجموعة الطلبات غير المتزامنة هذه. وبالنسبة للطلبات غير المتزامنة في الإعلانات، يكون المعرف |
النوع: string (سلسلة) | يتم العرض افتراضيًا. يمثل اسم مجموعة الطلبات غير المتزامنة هذه. |
النوع: boolean (قيمة منطقية) | يتم العرض افتراضيًا. يمثل الطلبات غير المتزامنة المكتملة في هذه المجموعة |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل إجمالي عدد الطلبات في مجموعة الطلبات هذه |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل عدد الطلبات غير المعروضة حتى الآن. |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل عدد الطلبات المتوفرة قيد التقدم. |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل عدد الطلبات المنتهية والناجحة. |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل عدد الطلبات المنتهية والفاشلة. |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل عدد الطلبات التي ألغاها المستخدم |
النوع: string (سلسلة) | لم يتم العرض افتراضيًا. يمثل معرف URI للإشعار والخاص بمجموعة الطلبات غير المتزامنة هذه. |
النوع: string (سلسلة) | لم يتم العرض افتراضيًا. يمثل الطريقة المُتبعة لتلقي الإشعار. وتتضمن القيم الصالحة ما يلي:
|
بعد الحصول على الحالة العامة الخاصة بمجموعة الطلبات غير المتزامنة، يمكنك الحصول على تفاصيل حول كل طلب:
curl -G \
-d 'fields=id,status' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/<REQUEST_SET_ID>/requests
يؤدي ذلك إلى إرجاع حالة كل طلب وتفاصيله داخل مجموعة الطلبات غير المتزامنة. وبالنسبة لإنشاء إعلان غير متزامن، يمكنك تقديم طلب واحد لإنشاء إعلان واحد. وتُستخدم معلمات الحالة لفلترة الطلبات حسب حالتها، ويمكن أن تمثل أية مجموعة تضم القيم التالية:
initial
– لم تتم المعالجة بعد. in_progress
– يمثل الطلب قيد المعالجة success
– يمثل الطلب المنتهي والناجح. error
– يمثل الطلب المنتهي والفاشل canceled
– يمثل الطلب الذي ألغاه المستخدمتكون الاستجابة عبارة عن مصفوفة بلغة JSON تتضمن حقولًا افتراضية. ولتضمين أي حقل غير افتراضي، يمكنك تحديده في fields
، مثل fields=id,scope_object_id,status,result,input,async_request_set
.
الاسم | الوصف |
---|---|
النوع: int (عدد صحيح) | يتم العرض افتراضيًا. يمثل معرف الطلب الفردي غير المتزامن |
النوع: int (عدد صحيح) | يتم العرض افتراضيًا. يمثل معرف أصل الكائن الذي يتم إنشاؤه من خلال هذا الطلب. وفي حالة إنشاء إعلان، يمثل معرف المجموعة الإعلانية للإعلان الجديد. |
النوع: string (سلسلة) | يتم العرض افتراضيًا. يمثل حالة هذا الطلب غير المتزامن. وتتوفر الخيارات التالية:
|
النوع: array (مصفوفة) | لم يتم العرض افتراضيًا. في حالة إنهاء الطلب، ستظهر نتيجة الطلب.
|
النوع: object (كائن) | لم يتم العرض افتراضيًا. يمثل الإدخال الأصلي لهذا الطلب غير المتزامن. وفي حالة إنشاء إعلان، يكون الإدخال هو |
النوع: object (كائن) | لم يتم العرض افتراضيًا. يمثل مجموعة الطلبات غير المتزامنة التي تحتوي على هذا الطلب الفردي |
للحصول على تفاصيل حول طلب غير متزامن معين، قم بإجراء الاستدعاء التالي:
curl -G \
-d 'fields=id,status' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/<REQUEST_SET_ID>/requests
يؤدي ذلك إلى إرجاع كائن بلغة JSON يتضمن الحقول المُدرجة أعلاه.
يمكنك إنشاء مجموعات طلبات متعددة غير متزامنة للإعلانات. للاستعلام عن جميع مجموعات الطلبات غير المتزامنة للإعلانات في حساب إعلاني:
curl -G \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/act_<AD_ACCOUNT_ID>/asyncadrequestsets
يؤدي ذلك إلى إرجاع مصفوفة بلغة JSON تتضمن كائنات مجموعة الطلبات غير المتزامنة. ويتطابق كل كائن مع ما هو محدد في قسم مجموعة الطلبات غير المتزامنة. ويمكنك فلترة النتائج باستخدام is_completed
. وفي حالة استخدام is_completed=true
، لن تظهر لك سوى مجموعة الطلبات غير المتزامنة المكتملة فقط.
يمكنك إجراء استدعاء غير متزامن لإنشاء إعلانات في مجموعات إعلانية مختلفة. للحصول على حالة كل مجموعة إعلانية، يمكنك الحصول على كل طلبات إنشاء الإعلانات لمجموعة إعلانية واحدة:
curl -G \
-d 'fields=id,status' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/<AD_SET_ID>/asyncadrequests
يؤدي ذلك إلى إرجاع مصفوفة بلغة JSON تضم كائنات الطلبات غير المتزامنة. وتتطابق الحالة وفلاتر الحقول وحقول الطلبات غير المتزامنة مع واجهة https://graph.facebook.com/<API_VERSION>/<REQUEST_SET_ID>/requests
API.
يمكنك تغيير name
وnotification_uri
وnotification_mode
لإحدى مجموعات الطلبات غير المتزامنة.
curl \
-F 'name=New Name' \
-F 'notification_mode=OFF' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/<REQUEST_SET_ID>
يؤدي ذلك إلى إرجاع القيمة true
عند نجاح التحديث. ويمكنك تغيير notification_uri
وnotification_mode
فقط قبل إرسال الإشعار.
يمكنك إلغاء طلب غير متزامن، ولكن يمكن إلغاء الطلب فقط إذا لم تتم معالجته بعد.
curl -X DELETE \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/<REQUEST_ID>
يمكن إرجاع القيمة true
عند نجاح الإلغاء. يمكنك أيضًا إلغاء الطلبات التي لم تتم معالجتها في مجموعة الطلبات غير المتزامنة:
curl -X DELETE \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0
/<REQUEST_SET_ID>
يمكن إرجاع القيمة true
عند نجاح الإلغاء.
الحصول على حالة طلب غير متزامن محدد:
//pretty=true for command line readable output
curl -G \
-d "id=6012384857989" \
-d "pretty=true" \
-d "access_token=_____" \
"https://graph.facebook.com/v21.0
/"
يتم إرجاع القيم التالية:
{ "id": "6012384857989", "owner_id": 12345, "name": "testasyncset", "is_completed": true }
يمكن الحصول على نتائج الطلبات:
curl -G \
-d "id=6012384857989" \
-d "pretty=true" \
-d "fields=result" \
-d "access_token=_____" \
"https://graph.facebook.com/v21.0
/requests"
يمكن إرجاع القيم:
{ "data": [ { "result": { "id": "6012384860989" }, "id": "6012384858389" }, { "result": { "id": "6012384858789" }, "id": "6012384858189" } ], "paging": { "cursors": { "after": "___", "before": "___" } } }
يمكن الحصول على قائمة بمجموعات الطلبات لأحد الحسابات الإعلانية:
curl -G \
-d "is_completed=1" \
-d "pretty=true" \
-d "access_token=___" \
"https://graph.facebook.com/v21.0
/act_71597454/asyncadrequestsets"
يمكن إرجاع القيم:
{ "data": [ { "id": "6012384253789", "owner_id": 71597454, "name": "testasyncset", "is_completed": true }, ], "paging": { "cursors": { "after": "___", "before": "___" } } }
يمكن الحصول على قائمة بطلبات لإحدى الحملات الإعلانية:
curl -G \
-d "status=SUCCESS,ERROR" \
-d "pretty=true" \
-d "access_token=___" \
"https://graph.facebook.com/v21.0
/6008248529789/asyncadrequests"
يتم إرجاع القيم التالية:
{ "data": [ { "id": "6012384951789", "scope_object_id": 6008248529789, "status": "SUCCESS" }, ], "paging": { "cursors": { "after": "___", "before": "___" } } }
عند استخدام الطلبات المُجمعة، ادمج عددًا من استدعاءات واجهة Graph API في طلب HTTP واحد. وتقوم واجهة API التسويق بتقسيم هذا الطلب إلى طلبات تأسيسية خاصة به. ويؤدي ذلك إلى جعل الطلبات المُجمعة تمثل الطريقة الأكثر فعالية للتفاعل مع واجهة API التسويق. ولتحقيق المزيد من الفعالية، يمكنك إجراء طلبات مُجمعة متوازية باستخدام سلاسل رسائل معالجة منفصلة.
تُعد الطلبات المُجمعة للإعلانات وتصميمات الإعلانات والمجموعات الإعلانية متشابهة للغاية، لذلك فإننا لا نتناولها هنا بشكل منفصل. ولمزيد من المعلومات، يرجى الاطلاع على الطلبات المُجمعة لواجهة Graph API وETags.
يمكنك تقديم تصميم الإعلان وكائنات الإعلانات الأخرى في طلب مُجمع. فعلى سبيل المثال، يمكنك إنشاء ثلاثة إعلانات باستخدام تصميم إعلان واحد وثلاث مواصفات استهداف مختلفة. حدد تصميم الإعلان أولًا، ثم قم بالإشارة إليه عند إنشاء كل إعلان:
curl -F 'access_token=______' -F 'test1=@./test1.jpg' -F 'batch=[ { "method": "POST", "name": "create_adimage", "relative_url": "<API_VERSION>/act_187687683/adimages", "attached_files": "test1" }, { "method": "POST", "name": "create_creative", "relative_url": "<API_VERSION>/act_187687683/adcreatives", "attached_files": "test1", "body": "name=sample creative&object_story_spec={\"link_data\": {\"image_hash\": \"{result=create_adimage:$.images.*.hash}\", \"link\": \"https://www.test12345.com\", \"message\": \"this is a sample message\"}, \"page_id\":\"12345678\"}°rees_of_freedom_spec={\"creative_features_spec\": {\"standard_enhancements\": {\"enroll_status\": \"OPT_OUT\"}}}" }, { "method": "POST", "relative_url": "<API_VERSION>/act_187687683/ads", "body": "adset_id=6004163746239&redownload=1&status=PAUSED&optimization_goal=REACH&billing_event=IMPRESSIONS&&creative={\"creative_id\":\"{result=create_creative:$.id}\"}&targeting={\"countries\":[\"US\"]}&name=test1" }, { "method": "POST", "relative_url": "<API_VERSION>/act_187687683/ads", "body": "adset_id=6004163746239&redownload=1&status=PAUSED&optimization_goal=REACH&billing_event=IMPRESSIONS&&creative={\"creative_id\":\"{result=create_creative:$.id}\"}&targeting={\"countries\":[\"US\"]}&name=test2" }, { "method": "POST", "relative_url": "<API_VERSION>/act_187687683/ads", "body": "adset_id=6004163746239&redownload=1&status=PAUSED&optimization_goal=REACH&billing_event=IMPRESSIONS&&creative={\"creative_id\":\"{result=create_creative:$.id}\"}&targeting={\"countries\":[\"US\"]}&name=test3" } ]' https://graph.facebook.com/
تتضمن الاستجابة رموز الاستجابة الفردية لكل طلب واستجابة Graph API القياسية. للحصول على التفاصيل، يمكنك الرجوع إلى إجراء طلبات API متعددة.
تستخدم عملية معالجة الطلب المُجمعتنسيق تعبير JSONPath للإشارة إلى الطلبات السابقة.
يمكنك تحديث الإعلانات من خلال الطلبات المُجمعة. لتحديث عروض الأسعار الخاصة بثلاثة إعلانات:
curl -F 'access_token=____' -F 'batch=[ { "method": "POST", "relative_url": "<API_VERSION>/6004251715639", "body": "redownload=1&name=new name" }, { "method": "POST", "relative_url": <API_VERSION>/v6004251716039", "body": "redownload=1&name=new name" }, { "method": "POST", "relative_url": "<API_VERSION>/6004251715839", "body": "redownload=1&name=new name" } ]' https://graph.facebook.com
إذا كنت تريد تضمين redownload=1
في عنوان URL ذي صلة، فستحصل على تفاصيل حول الإعلان بالكامل بما في ذلك معرف الإعلان. ويساعد ذلك في تحديد الإعلانات التي قمت بتحديثها.
لتحديث تصميم الإعلان، حدد التصميم بأكمله أو قدّم معرف تصميم جديدًا. ويرجع ذلك إلى أنه لا يمكن تحرير تصميمات الإعلانات بعد إنشائها باستثناء الاسم وحالة التشغيل.
إذا كان لديك عدد كبير من الإعلانات، فقم بتقسيم الطلب إلى طلبات متعددة ضمن طلب مُجمع:
curl -F 'access_token=____' -F 'batch=[ { "method": "GET", "relative_url": "<API_VERSION>/?ids=6003356308839,6004164369439&fields=<comma separated list of fields>" }, { "method": "GET", "relative_url": "<API_VERSION>/6003356307839/ads&fields=<comma separated list of fields>" }, { "method": "GET", "relative_url": "<API_VERSION>/act_187687683/ads?adset_ids=[6003356307839, 6004164259439]&fields=<comma separated list of fields>" } ]' https://graph.facebook.com
يُعد 6003356308839
و6004164369439
هما معرفي الإعلانات، ويُعد 6003356307839
و6004164259439
هما معرفي المجموعة الإعلانية.
إذا كان لديك عدد كبير من رؤى الإعلانات، فقم بتقسيم الطلب إلى طلبات متعددة ضمن طلب مُجمع:
curl -F 'access_token=____' -F 'batch=[ { "method": "GET", "relative_url": "<API_VERSION>/act_19643108/insights?filtering=[{field:'ad.id',operator:'IN',value:[6003356308839,6004164369439]}]" }, { "method": "GET", "relative_url": "<API_VERSION>/6003356308839/insights" }, { "method": "GET", "relative_url": "<API_VERSION>/act_187687683/insights?filtering=[{field:'adset.id',operator:'IN',value:[6003356307839, 6004164259439]}]" } ]' https://graph.facebook.com
في هذا المثال، يُعد 6003356308839
و6004164369439
هما معرفي الإعلانات، ويُعد6003356307839
و6004164259439
هما معرفي المجموعة الإعلانية.
بالنسبة للحسابات الإعلانية التي تحتوي على عدد كبير من الإعلانات، لا يوصى باستخدام إحصائيات act_<account_ID>/adgroupstats
نظرًا لأنها قد تؤدي إلى انتهاء مهلة الطلب.
يمكنك طلب 50 قيمة تقديرية للوصول كحد أقصى في طلب مُجمع واحد. يوضح المثال التالي قيمة تقديرية للوصول المطلوب والخاصة بمواصفتي استهداف مختلفة:
curl -F 'access_token=____' -F 'batch=[ { "method": "GET", "relative_url": "<API_VERSION>/act_600335/reachestimate?targeting_spec={'geo_locations': {'countries':['US']}}" }, { "method": "GET", "relative_url": "<API_VERSION>/act_600335/reachestimate?targeting_spec={'geo_locations': {'countries':['FR']}}" } ]' https://graph.facebook.com
تتيح لك واجهة API الدُفعة تجميع الطلبات وإرسالها بشكل غير متزامن. وقم بتجميع عدة استدعاءات لواجهة Graph API في طلب HTTP واحد، وقم بإجرائها بشكل غير متزامن بدون الحاجة إلى الحظر. ويمكنك أيضًا تحديد التبعيات بين العمليات ذات الصلة.
يعالج Facebook كل عملية مستقلة في العمليات المتوازية والعمليات التابعة على التوالي. ويمكن أن يحتوي كل استدعاء لواجهة API على 1000 طلب كحد أقصى.
لإجراء استدعاء لـ API التجميع:
curl \
-F "access_token=___" \
-F "name=asyncbatchreqs" \
-F "adbatch=<an array of requests>"\
"https://graph.facebook.com/v21.0
/act_<AD_ACCOUNT_ID>/async_batch_requests"
يمكنك تقديم مصفوفة من طلبات HTTP POST
باعتبارها مصفوفات بلغة JSON
. ويتضمن كل طلب ما يلي:
name
relative_url
- يمثل جزءًا من عنوان URL الذي يلي graph.facebook.combody
تقوم واجهة API بإرجاع معرف تستخدمه في الاستعلام عن مدى تقدم الطلبات.
على سبيل المثال، أنشئ حملة إعلانية تتضمن مجموعة إعلانية بتنسيق JSONPath للإشارة إلى الطلبات السابقة:
curl \ -F "access_token=___" \ -F "name=batchapiexample" \ -F "adbatch=[ { 'name': 'create-campaign', 'relative_url': 'act_123456/campaigns', 'body': 'name%3DTest+Campaign%26objective%3DLINK_CLICKS%26status%3DPAUSED%26buying_type%3DAUCTION', }, { 'name': 'create-adset', 'relative_url': 'act_123456/adsets', 'body': 'targeting%3D%7B%22geo_locations%22%3A%7B%22countries%22%3A%5B%22US%22%5D%7D%7D%26daily_budget%3D5000%26campaign_id%3D%7Bresult%3Dcreate-campaign%3A%24.id%7D%26bid_amount%3D2%26name%3DFirst%2BAd%2BSet%20Test%26billing_event%3DLINK_CLICKS', }, ]" \ https://graph.facebook.com/<API_VERSION>/act_123456/async_batch_requests
للحصول على حالة مجموعة الطلبات:
curl –G \
-d "access_token=___" \
-d "fields=<comma separated list of fields>" \
"https://graph.facebook.com/v21.0
/<REQUEST_SET_ID>"
يؤدي ذلك إلى إرجاع الحالة العامة لمجموعات الطلبات غير المتزامنة باعتبارها كائنات بلغة JSON. ولا يتم إرجاع كل الحقول افتراضيًا. ولتضمينها جميعًا، حدد fields
، مثل fields=id,owner_id,name,total_count,success_count,error_count,is_completed
الاسم | الوصف |
---|---|
النوع: int (عدد صحيح) | يتم العرض افتراضيًا. يمثل المعرف |
النوع: int (عدد صحيح) | يتم العرض افتراضيًا. يمثل الكائن الذي يتضمن مجموعة الطلبات غير المتزامنة هذه. وإذا كنت تنشئ إعلانات، فيكون المعرف |
النوع: string (سلسلة) | يتم العرض افتراضيًا. يمثل اسم مجموعة الطلبات غير المتزامنة هذه |
النوع: boolean (قيمة منطقية) | يتم العرض افتراضيًا. يمثل جميع الطلبات غير المتزامنة المكتملة في المجموعة |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل إجمالي عدد الطلبات في مجموعة الطلبات هذه |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل عدد الطلبات التي لم يتم عرضها حتى الآن |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل عدد الطلبات المتوفرة قيد التقدم |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل عدد الطلبات المنتهية والناجحة |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل عدد الطلبات المنتهية والفاشلة |
النوع: int (عدد صحيح) | لم يتم العرض افتراضيًا. يمثل عدد الطلبات التي ألغاها المستخدم |
النوع: string (سلسلة) | لم يتم العرض افتراضيًا. يمثل معرف URI للإشعار والخاص بمجموعة الطلبات غير المتزامنة هذه. |
النوع: string (سلسلة) | لم يتم العرض افتراضيًا. يمثل الطرق المُتبعة لتلقي الإشعار. وفيما يلي القيم الصالحة:
|
النوع: string (سلسلة) | لم يتم العرض افتراضيًا. يمثل نتيجة إرسال الإشعار. |
النوع: string (سلسلة) | لم يتم العرض افتراضيًا. يمثل حالة الإشعار: |
بعد الحصول على الحالة العامة، يمكنك الحصول على تفاصيل لكل طلب:
curl –G \
-d "access_token=___" \
-d "fields=<comma separated list of fields>" \
"https://graph.facebook.com/v21.0
/<REQUEST_SET_ID>/requests"
يؤدي ذلك إلى إرجاع التفاصيل باعتبارها مصفوفة بلغة JSON. ولتضمين أي حقول غير افتراضية، يمكنك تحديدها في fields
، مثل fields=id,scope_object_id,status,result,input,async_request_set
.
الاسم | الوصف |
---|---|
النوع: int (عدد صحيح) | يتم العرض افتراضيًا. يمثل معرف الطلب الفردي غير المتزامن |
النوع: int (عدد صحيح) | يتم العرض افتراضيًا. يمثل معرف أصل الكائن الذي يتم إنشاؤه من خلال هذا الطلب. وفي حالة إنشاء إعلانات، يكون هذا هو معرف المجموعة الإعلانية للإعلان الجديد. |
النوع: string (سلسلة) | يتم العرض افتراضيًا. يمثل حالة هذا الطلب غير المتزامن:
|
النوع: array (مصفوفة) | لم يتم العرض افتراضيًا. في حالة إنهاء الطلب، تظهر النتيجة. وعند نجاح العملية، تتطابق النتيجة مع نتيجة واجهة API الطلب المتزامن. فعلى سبيل المثال، في حالة إنشاء إعلانات، تكون النتيجة هي معرف إعلان جديد. وبالنسبة للأخطاء:
|
النوع: object (كائن) | لم يتم العرض افتراضيًا. يمثل الإدخال الأصلي لهذا الطلب. وفي حالة إنشاء إعلان، يكون الإدخال هو |
النوع: object (كائن) | لم يتم العرض افتراضيًا. يمثل مجموعة الطلبات غير المتزامنة التي تحتوي على هذا الطلب. |
يمكنك إنشاء العديد من مجموعات الطلبات لواجهة API الدُفعة. للاستعلام عن كل مجموعات الطلبات ضمن حساب إعلاني:
curl –G \
-d "access_token=___" \
"https://graph.facebook.com/v21.0
/act_<AD_ACCOUNT_ID>/async_requests"
تدعم API التسويق Etags. يساعدك ذلك في معرفة ما إذا كانت البيانات التي تستعلم عنها قد تغيّرت منذ آخر مرة راجعتها أم لا. وفيما يلي طريقة عمل ذلك:
304 – Not Modified
ولا يتم إرجاع أي بيانات.بينما تساعد قيم ETags في تقليل نقل البيانات، فيظل If-None-Match GET
يحسب تقييدات معدلات الاستدعاء لتطبيقك.
يتم احتساب قيمة ETag باستخدام الاستجابة الكاملة من استدعاء واجهة API بما في ذلك التنسيق الخاص بها. وقد يتأثر تنسيق الاستجابة بسلسلة وكيل المستخدم. ولذلك، يجب أن تحافظ على وكيل المستخدم متسقًا بين الاستدعاءات التي يتم إجراؤها من العميل نفسه.
للتحقق مما إذا كانت الحسابات الإعلانية لدى المستخدم قد طرأ عليها أي تغيير أم لا.
الخطوة الأولى: تحديد قيمة ETag للبيانات الحالية
curl -i "https://graph.beta.facebook.com/me/adaccounts?access_token=___"
ستبدو الاستجابة كما يلي:
HTTP/1.1 200 OK Access-Control-Allow-Origin: * Cache-Control: private, no-cache, no-store, must-revalidate Content-Type: text/javascript; charset=UTF-8 ETag: "7776cdb01f44354af8bfa4db0c56eebcb1378975" Expires: Sat, 01 Jan 2000 00:00:00 GMT Pragma: no-cache X-FB-Rev: 495685 X-FB-Server: 10.30.149.204 X-FB-Debug: CWbHcogdwUE8saMv6ML+8FacXFrE8ufhjjwxU2dQWaA= X-Cnection: close Date: Mon, 16 Jan 2012 12:07:44 GMT Content-Length: 3273 {"data":[{"id":"act.......
في هذا المثال، تكون قيمة ETag هي "7776cdb01f44354af8bfa4db0c56eebcb1378975"
، ويرجى ملاحظة أن قيمة ETag تتضمن علامتي الاقتباس ("
).
الخطوة الثانية: تحديد ما إذا كان قد طرأ أي تغيير على البيانات أم لا
curl -i -H "If-None-Match: \"7776cdb01f44354af8bfa4db0c56eebcb1378975\"" "https://graph.beta.facebook.com/me/adaccounts?access_token=___"
إذا لم تطرأ أي تغييرات، فستبدو الاستجابة كما يلي:
HTTP/1.1 304 Not Modified Access-Control-Allow-Origin: * Cache-Control: private, no-cache, no-store, must-revalidate Content-Type: text/javascript; charset=UTF-8 Expires: Sat, 01 Jan 2000 00:00:00 GMT Pragma: no-cache X-FB-Rev: 495685 X-FB-Server: 10.30.177.190 X-FB-Debug: ImBhat3k07Nez5FvuS2lPWU0U2xxmxD4B3k9ua4Sk7Q= X-Cnection: close Date: Mon, 16 Jan 2012 12:09:17 GMT Content-Length: 0
لاحظ الاستجابة 304 Not Modified
. وإذا كان قد طرأ أي تغيير على البيانات، فقد يتم إرجاع استجابة واجهة API الطبيعية.
يتوفر مثال على الدُفعة للتحقق مما إذا كانت إعلانات المستخدم قد طرأ عليها أي تغيير أم لا.
الخطوة الأولى: تحديد قيمة ETag للبيانات الحالية
curl -i "curl -F 'access_token=___' -F 'batch=[ {"method":"GET", "relative_url": "?ids=6003356308839,6004164369439" }, {"method":"GET", "relative_url": "act_12345678/ads?campaign_ids=[6003356307839, 6004164259439]"}]' https://graph.facebook.com"
ستحتوي الاستجابة على قيم ETag على النحو التالي:
...{"name":"ETag","value":"\"21d371640127490b2ed0387e8af3f0f8c9eff012\""}... ...{"name":"ETag","value":"\"410e53bb257f116e8716e4ebcc76df1c567b87f4\""}...
في هذا المثال، تكون قيمتا ETags هما "21d371640127490b2ed0387e8af3f0f8c9eff012"
و"410e53bb257f116e8716e4ebcc76df1c567b87f4"
، ويرجى ملاحظة أن قيمة ETag تتضمن علامتى الاقتباس ("
).
الخطوة الثانية: تحديد ما إذا كان قد طرأ أي تغيير على البيانات أم لا:
curl -F 'access_token=___' -F 'batch=[ {"method":"GET", "headers":["If-None-Match: \"21d371640127490b2ed0387e8af3f0f8c9eff012\""], "relative_url": "?ids=6003356308839,6004164369439" }, {"method":"GET", "headers":["If-None-Match: \"410e53bb257f116e8716e4ebcc76df1c567b87f4\""], "relative_url": "act_12345678/ads?campaign_ids=[6003356307839, 6004164259439]"}]' https://graph.facebook.com
إذا لم تطرأ أي تغييرات، فستبدو الاستجابة كما يلي:
[{ "code": 304, . . . "body": null }, { "code": 304, . . . "body": null }]
لاحظ الاستجابة 304 Not Modified
. وإذا طرأت تغييرات على البيانات، فسنقوم بإرجاع استجابة واجهة API الطبيعية.