يصف هذا المستند البروتوكول الذي تستخدمه واجهات برمجة التطبيقات لبيانات Google، بما في ذلك المعلومات حول شكل طلب البحث والشكل الذي تظهر به النتائج وما إلى ذلك.
لمزيد من المعلومات حول واجهات برمجة التطبيقات لبيانات Google، اطلع على مستند دليل مطوري بيانات Google ودليل البروتوكول.
الجمهور
تم إعداد هذا المستند لأي شخص يريد فهم تفاصيل تنسيق وبروتوكول XML المستخدمَين في Google Data APIs.
إذا كنت ترغب فقط في كتابة شفرة تستخدم واجهات برمجة التطبيقات لعملاء Google Data، فلا تحتاج إلى معرفة هذه التفاصيل، وبدلاً من ذلك، يمكنك استخدام مكتبات العميل الخاصة بلغة معينة.
ولكن إذا كنت تريد فهم البروتوكول، فاقرأ هذا المستند. على سبيل المثال، قد ترغب في قراءة هذا المستند لمساعدتك في أي من المهام التالية:
- تقييم بنية بيانات Google
- الترميز باستخدام البروتوكول بدون استخدام مكتبات برامج "بيانات Google" المتوفرة
- كتابة مكتبة عميل بلغة جديدة
يفترض هذا المستند أنك تفهم أساسيات XML ومساحات الأسماء والخلاصات المشتركة والطلبات GET
وPOST
وPUT
وDELETE
في HTTP، بالإضافة إلى مفهوم HTTP لـ "المورد". للحصول على مزيد من المعلومات حول هذه الأمور، يمكنك الاطلاع على قسم الموارد الإضافية في هذا المستند.
لا يعتمد هذا المستند على أية لغة برمجة محددة، فيمكنك إرسال وتلقي رسائل بيانات Google باستخدام أية لغة برمجة تتيح لك إصدار طلبات HTTP وتحليل الردود المستندة إلى XML.
تفاصيل البروتوكول
يصف هذا القسم تنسيق مستند بيانات Google وبنية طلب البحث.
تنسيق المستند
تشترك كل من بيانات Google وAtom وRSS 2.0 في نفس نموذج البيانات الأساسي، وهو حاوية تتضمن بعض البيانات العمومية وأي عدد من الإدخالات. بالنسبة إلى كل بروتوكول، يتم تحديد التنسيق من خلال مخطط أساسي، ولكن يمكن توسيعه باستخدام مساحات الأسماء الأجنبية.
يمكن لـ Google Data APIs استخدام تنسيق مشاركة Atom (للقراءة والكتابة على حد سواء) أو تنسيق RSS (للقراءة فقط).
تنسيق Atom هو التنسيق التلقائي لبيانات Google. لطلب رد بتنسيق RSS، استخدِم المَعلمة /alt=rss/
. لمزيد من المعلومات، راجِع طلبات البحث.
عند طلب البيانات بتنسيق RSS، توفّر "بيانات Google" خلاصة (أو تمثيلاً آخر للمورد) بتنسيق RSS. إذا لم تتوفّر خاصية RSS مكافئة لخاصية معيّنة على "بيانات Google"، تستخدم "بيانات Google" موقع Atom وتسمّيه بمساحة اسم مناسبة للإشارة إلى أنّه امتداد لخدمة RSS.
ملاحظة: تستخدم معظم خلاصات "بيانات Google" بتنسيق Atom مساحة الاسم Atom كمساحة اسم تلقائية من خلال تحديد سمة xmlns
في عنصر الخلاصة، ويمكنك مراجعة قسم الأمثلة للحصول على أمثلة حول كيفية إجراء ذلك. وبالتالي، لا تحدّد الأمثلة في هذا المستند atom:
بشكل واضح للعناصر في خلاصة بتنسيق Atom.
تعرض الجداول التالية تمثيلي Atom وRSS لعناصر المخطط. يتم التعامل مع جميع البيانات غير المذكورة في هذه الجداول على أنها XML عادي وتظهر بنفس الطريقة في كلا العرضين. وما لم يُذكر خلاف ذلك، ستكون عناصر XML في عمود معيّن في مساحة الاسم المقابلة لذلك العمود. يستخدم هذا الملخّص تدوين XPath العادي: على وجه الخصوص، تعرض الشرطة المائلة العرض الهرمي للعنصر وتشير العلامة @ إلى سمة للعنصر.
في كل من الجداول التالية، تكون العناصر المحددة مطلوبة.
يعرض الجدول التالي عناصر خلاصة بيانات Google:
عنصر مخطط الخلاصة | تمثيل Atom | تمثيل RSS |
---|---|---|
عنوان الخلاصة | /feed/title |
/rss/channel/title |
الرقم التعريفي للخلاصة | /feed/id |
/rss/channel/atom:id |
رابط HTML للخلاصة | /feed/link[@rel="alternate"] \[@type="text/html"]/@href |
/rss/channel/link |
وصف الخلاصة | /feed/subtitle |
/rss/channel/description |
لغة الخلاصة | /feed/@xml:lang |
/rss/channel/language |
حقوق طبع ونشر الخلاصة | /feed/rights |
/rss/channel/copyright |
مؤلف الخلاصة |
(مطلوب في حالات معينة، راجع مواصفات Atom.) |
/rss/channel/managingEditor |
تاريخ آخر تحديث للخلاصة | /feed/updated (تنسيق RFC 3339) |
/rss/channel/lastBuildDate (تنسيق RFC 822) |
فئة الخلاصة | /feed/category/@term |
/rss/channel/category |
مخطط فئة الخلاصة | /feed/category/@scheme |
/rss/channel/category/@domain |
منشئ الخلاصات | /feed/generator /feed/generator/@uri |
/rss/channel/generator |
رمز الخلاصة | /feed/icon |
/rss/channel/image/url (ما لم يكن هناك شعار، وفي هذه الحالة لا يتم تضمين الرمز في الخلاصة) |
شعار الخلاصة | /feed/logo |
/rss/channel/image/url |
يعرض الجدول التالي عناصر خلاصة نتائج البحث في بيانات Google. لاحظ أن بيانات Google تعرض بعض عناصر استجابة OpenSearch 1.1 في خلاصات نتائج البحث.
عنصر مخطط خلاصة نتائج البحث | تمثيل Atom | تمثيل RSS/OpenSearch |
---|---|---|
عدد نتائج البحث | /feed/openSearch:totalResults |
/rss/channel/openSearch:totalResults |
فهرس بدء نتائج البحث | /feed/openSearch:startIndex |
/rss/channel/openSearch:startIndex |
عدد نتائج البحث لكل صفحة | /feed/openSearch:itemsPerPage |
/rss/channel/openSearch:itemsPerPage |
يعرض الجدول التالي عناصر إدخال بيانات Google:
عنصر مخطّط الإدخال | تمثيل Atom | تمثيل RSS |
---|---|---|
معرِّف الإدخال | /feed/entry/id |
/rss/channel/item/guid |
رقم تعريف إصدار الإدخال | مضمّنة اختياريًا في EditURI (راجِع قسم مواقع التفاؤل الإيجابي في هذا المستند). | — |
عنوان الإدخال | /feed/entry/title |
/rss/channel/item/title |
رابط الإدخال | /feed/entry/link |
/rss/channel/item/link /rss/channel/item/enclosure /rss/channel/item/comments |
ملخّص الاشتراك |
(مطلوب في حالات معينة، راجع مواصفات Atom.) |
/rss/channel/item/atom:summary |
محتوى المشاركة |
(في حال عدم توفّر عنصر محتوى، يجب أن يحتوي الإدخال على عنصر |
/rss/channel/item/description |
مؤلف المشاركة |
(مطلوب في حالات معينة، راجع مواصفات Atom.) |
/rss/channel/item/author |
فئة الاشتراك | /feed/entry/category/@term |
/rss/channel/item/category |
مخطط فئة المشاركة | /feed/entry/category/@scheme |
/rss/channel/item/category/@domain |
تاريخ نشر المشاركة | /feed/entry/published (RFC 3339) |
/rss/channel/item/pubDate (RFC 822) |
تاريخ تحديث الإدخال | /feed/entry/updated (RFC 3339) |
/rss/channel/item/atom:updated (RFC 3339) |
طلبات البحث
يصف هذا القسم كيفية استخدام نظام طلبات البحث.
مبادئ تصميم نموذج طلب البحث
نموذج طلب البحث بسيط جدًا عن قصد. المبادئ الأساسية هي:
- يتم التعبير عن طلبات البحث كمعرفات عناوين URI لبروتوكول HTTP، وليس كرؤوس HTTP أو كجزء من حمولة. ومن فوائد هذه الطريقة أنه يمكنك الربط بطلب بحث.
- يتم تحديد الإسنادات لعنصر واحد. وبالتالي، ليست هناك أي طريقة لإرسال طلب بحث عن ارتباط مثل "العثور على جميع الرسائل الإلكترونية من الأشخاص الذين أرسلوا لي 10 رسائل إلكترونية على الأقل اليوم".
- مجموعة المواقع التي يمكن أن تُعتمد عليها طلبات البحث محدودة للغاية؛ فمعظم طلبات البحث تكون ببساطة طلبات بحث نصية كاملة.
- والأمر متروك لآلية تنفيذ النتائج.
- البروتوكول قابل للتوسع بشكل طبيعي. إذا كنت تريد الكشف عن استنتاجات إضافية أو تصنيف في خدمتك، يمكنك إجراء ذلك بسهولة من خلال تقديم معلمات جديدة.
طلبات البحث
يرسل أحد العملاء طلبًا إلى خدمة بيانات Google من خلال إصدار طلب HTTP GET
. يتألف معرّف الموارد المنتظم (URI) لطلب البحث من معرّف الموارد المنتظم (URI) للمورد (يُسمى FeedURI في تنسيق Atom) متبوعًا بمعلّمات طلب البحث. ويتم تمثيل معظم معلمات طلبات البحث على أنها معلمات عناوين URL تقليدية في ?name=value[&...]
. يتم التعامل مع معلمات الفئة بشكل مختلف؛ انظر أدناه.
على سبيل المثال، إذا كان URIURI هو http://www.example.com/feeds/jo
، يمكنك إرسال طلب بحث باستخدام عنوان URI التالي:
http://www.example.com/feeds/jo?q=Darcy&updated-min=2005-04-19T15:30:00Z
تدعم خدمات بيانات Google الشرط HTTP المشروط GET
. وهي تضبط رأس الرد Last-Modified استنادًا إلى قيمة العنصر <atom:updated>
في الخلاصة أو الإدخال المعروض. يمكن للعميل إرسال هذه القيمة مرة أخرى كقيمة لرأس الطلب If-Modified-Since لتجنب استرداد المحتوى مرة أخرى إذا لم يتم تغييره. إذا لم يتغير المحتوى منذ وقت If-Modified-Since، فستعرض خدمة بيانات Google استجابة HTTP 304 (لم يتم تعديلها).
يجب أن تدعم خدمة بيانات Google طلبات بحث الفئات وطلبات البحث عن alt
، كما أن دعم المَعلمات الأخرى اختياري. ويؤدي تمرير معلّمة عادية لا تفهمها خدمة معيّنة إلى الحصول على استجابة 403 Forbidden
. يؤدي تمرير معلمة غير قياسية غير متوافقة إلى استجابة 400 Bad Request
. للحصول على معلومات عن رموز الحالة الأخرى، راجع القسم رموز حالة HTTP في هذا المستند.
يتم تلخيص معلمات طلب البحث القياسية في الجدول التالي. يلزم تشفير جميع قيم المعلمات بعنوان URL.
المعلمة | المعنى | ملاحظات |
---|---|---|
q |
سلسلة طلب بحث عن النص الكامل |
|
/-/category |
فلتر الفئات |
|
category |
فلتر الفئات |
|
author |
مؤلف المشاركة |
|
alt |
نوع التمثيل البديل |
|
updated-min ، updated-max |
القيود المفروضة على تاريخ تحديث الإدخال |
|
published-min ، published-max |
القيود المفروضة على تاريخ نشر الإدخال |
|
start-index |
فهرس يستند إلى 1 للنتيجة الأولى المطلوب استردادها |
|
max-results |
الحد الأقصى لعدد النتائج المراد استردادها | بالنسبة إلى أي خدمة تحتوي على قيمة max-results تلقائية (لتقييد حجم الخلاصة التلقائية)، يمكنك تحديد عدد كبير جدًا إذا أردت تلقّي الخلاصة بأكملها. |
entryID | رقم تعريف إدخال محدّد لاسترداده |
|
حول طلبات البحث عن الفئة
قررنا تحديد تنسيق غير مألوف إلى حد ما لطلبات بحث الفئة. بدلاً من طلب بحث مثل ما يلي:
http://example.com/jo?category=Fritz&category=2006
ونحن نستخدم:
http://example.com/jo/-/Fritz/2006
تحدد هذه الطريقة أحد الموارد بدون استخدام معامِلات طلب البحث، وتنتج معرّفات موارد منتظمة (URI) أكثر وضوحًا. لقد اخترنا هذا الأسلوب للفئات لأننا نعتقد أن طلبات البحث في الفئة ستكون طلبات البحث الأكثر شيوعًا.
يتمثل سلبي هذا النهج في أننا نطالبك باستخدام /-/
في طلبات البحث للفئات، حتى تتمكن خدمات بيانات Google من تمييز طلبات البحث عن الفئة من مُعرّفات الموارد المنتظمة (URI) للموارد الأخرى، مثل http://example.com/jo/MyPost/comments
.
ردود طلب البحث
تعرض طلبات البحث خلاصة Atom أو إدخال بتنسيق Atom أو خلاصة RSS، بناءً على معلمات الطلب.
تحتوي نتائج طلبات البحث على عناصر OpenSearch التالية مباشرة ضمن العنصر <feed>
أو العنصر <channel>
(بناء على ما إذا كانت النتائج بتنسيق Atom أو RSS):
openSearch:totalResults
- إجمالي عدد نتائج البحث لطلب البحث (ليست كل النتائج موجودة في خلاصة النتائج).
openSearch:startIndex
- الفهرس المستند إلى الرقم 1 للنتيجة الأولى.
openSearch:itemsPerPage
- الحد الأقصى لعدد العناصر التي تظهر على صفحة واحدة. ويتيح هذا للعملاء إنشاء روابط مباشرة إلى أي مجموعة من الصفحات التالية. ومع ذلك، بالنسبة إلى المخاطر المحتملة في استخدام هذا الرقم، راجع الملاحظة بخصوص
start-index
في الجدول في قسم طلبات البحث.
قد تتضمن خلاصة استجابة Atom وإدخالاته أيًا من عناصر Atom وGoogle Data التالية (بالإضافة إلى العناصر الأخرى المدرجة في مواصفات Atom):
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="..."/>
- يحدد هذا الإعداد معرّف الموارد المنتظم (URI) الذي يمكن استرداد خلاصة Atom كاملة إليه.
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="..."/>
- يحدد PostURI لخلاصة Atom (حيث يمكن نشر الإدخالات الجديدة).
<link rel="self" type="..." href="..."/>
- تحتوي على معرّف الموارد المنتظم (URI) لهذا المورد. وتعتمد قيمة السمة
type
على التنسيق المطلوب. إذا لم تتغير أي بيانات في هذه الفترة، فإن إرسال GET آخر إلى معرّف الموارد المنتظم هذا يؤدي إلى عرض الاستجابة نفسها. <link rel="previous" type="application/atom+xml" href="..."/>
- يحدد معرّف الموارد المنتظم للجزء السابق من مجموعة نتائج طلب البحث هذه، إذا كان مقسمًا.
<link rel="next" type="application/atom+xml" href="..."/>
- يحدد هذا الإعداد معرّف الموارد المنتظم للجزء التالي من مجموعة نتائج طلب البحث هذه، إذا كان مقسمًا.
<link rel="edit" type="application/atom+xml" href="..."/>
- يحدد هذا العنصر محرر قيم Atom لإدخال Atom (حيث ترسل إدخالاً محدّثًا).
في ما يلي نموذج لنص استجابة، استجابةً لطلب بحث:
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"> <id>http://www.example.com/feed/1234.1/posts/full</id> <updated>2005-09-16T00:42:06Z</updated> <title type="text">Books and Romance with Jo and Liz</title> <link rel="alternate" type="text/html" href="http://www.example.net/"/> <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full"/> <link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full"/> <link rel="self" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full"/> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> <generator version="1.0" uri="http://www.example.com">Example Generator Engine</generator> <openSearch:totalResults>2</openSearch:totalResults> <openSearch:startIndex>0</openSearch:startIndex> <entry> <id>http://www.example.com/feed/1234.1/posts/full/4521614025009481151</id> <published>2005-01-09T08:00:00Z</published> <updated>2005-01-09T08:00:00Z</updated> <category scheme="http://www.example.com/type" term="blog.post"/> <title type="text">This is the title of entry 1009</title> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml">This is the entry body of entry 1009</div> </content> <link rel="alternate" type="text/html" href="http://www.example.com/posturl"/> <link rel="edit" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full/4521614025009481151"/> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> </entry> <entry> <id>http://www.example.com/feed/1234.1/posts/full/3067545004648931569</id> <published>2005-01-07T08:00:00Z</published> <updated>2005-01-07T08:02:00Z</updated> <category scheme="http://www.example.com/type" term="blog.post"/> <title type="text">This is the title of entry 1007</title> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml">This is the entry body of entry 1007</div> </content> <link rel="alternate" type="text/html" href="http://www.example.com/posturl"/> <link rel="edit" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full/3067545004648931569"/> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> </entry> </feed>
إذا كانت الخلاصة المطلوبة بتنسيق Atom، وإذا لم يتم تحديد معلَمات طلب بحث، وإذا لم تكن النتيجة تحتوي على جميع الإدخالات، يتم إدراج العنصر التالي في خلاصة المستوى الأعلى: <link rel="next" type="application/atom+xml" href="..."/>
. وهو يشير إلى خلاصة تحتوي على المجموعة التالية من الإدخالات. تحتوي المجموعات اللاحقة على عنصر <link rel="previous" type="application/atom+xml" href="..."/>
مطابق. ومن خلال اتباع جميع الروابط التالية، يمكن للبرنامج استرداد جميع الإدخالات من الخلاصة.
رموز حالة HTTP
يوضح الجدول التالي معنى رموز حالة HTTP المختلفة في سياق خدمات بيانات Google.
الرمز | الشرح |
---|---|
200 موافق | ليس هناك خطأ. |
201 تم الإنشاء | تم إنشاء المورد بنجاح. |
304 لم يتم التعديل | لم يتغير المورد منذ الوقت المحدد في رأس If-Modified-Since للطلب. |
400 طلب غير صالح | عنوان URI أو عنوان الطلب غير صالح أو معلمة غير قياسية غير مدعومة. |
401 غير مصرح | التخويل لازم. |
403 FORBIDDEN | معلمة قياسية غير معتمدة، أو أخفقت مصادقة أو تفويض. |
404 لم يتم العثور على الصفحة | لم يتم العثور على المورد (مثل خلاصة أو إدخال). |
409 تعارض | رقم الإصدار المحدد لا يطابق أحدث رقم إصدار للمورد. |
500 خطأ في الخادم الداخلي | حدث خطأ داخلي. وهذا هو الرمز الافتراضي المستخدم لجميع الأخطاء غير المعروفة. |
التزامن المتفائل (الإصدار)
في بعض الأحيان، من المهم ضمان عدم استبدال أكثر من عميل لتغييرات بعضهم البعض بدون قصد. ويمكن تحقيق ذلك بسهولة أكبر من خلال التأكد من أن الإصدار الحالي من إدخال يتم تعديله بواسطة العميل هو الإصدار نفسه الذي يستند إليه العميل لإجراء تعديلاته. إذا أجرى عميل ثانٍ تعديلاً قبل البرنامج الأول، سيتم رفض تحديث البرنامج الأول لأن العميل الأول لم يعد يعتمد تعديلاته على أحدث إصدار.
في خلاصات "بيانات Google" التي تتيح إمكانية تحديد الإصدارات، ننفذ دلالات الألفاظ هذه من خلال إلحاق معرّف إصدار بكل من معرّف التعديل "URI" لكل إدخال. وتجدر الإشارة إلى أنّ معرّف التعديل (URI) هو المتأثر فقط، وليس معرّف الإدخال. في هذا النظام، يؤدي كل تحديث إلى تغيير عنصر معرِّف الموارد المنتظم (URI) للإدخال، مما يضمن فشل التحديثات اللاحقة استنادًا إلى الإصدار الأصلي. وبالطبع، فعمليات الحذف تتماثل تمامًا مع التحديثات التي تتعلق بهذه الميزة. وإذا أرسلت عملية حذف برقم إصدار قديم، فسيخفق الحذف.
لا تتيح جميع خلاصات "بيانات Google" التزامن متفائل. في الخلاصة المتوافقة، إذا كان الخادم قد اكتشف تعارضًا بين الإصدارات على PUT أو DELETE، سيستجيب الخادم باستخدام 409 Conflict
. يحتوي نص الاستجابة على الحالة الحالية للإدخال (مستند إدخال Atom). ويُنصح العميل بحل التضارب وإعادة إرسال الطلب، باستخدام EditURI من الاستجابة 409.
ملاحظات عن التحفيز والتصميم
ويسمح لنا هذا النهج المتّبَع بالتزامنية باستخدام دلالات الألفاظ التي نريدها بدون الحاجة إلى ترميز جديد لأرقام تعريف الإصدارات، ما يجعل ردود بيانات Google متوافقة مع نقاط النهاية التي لا تتبع Google Data Atom.
بدلاً من تحديد أرقام تعريف الإصدارات، كان من الممكن اختيار الطابع الزمني للتحديث في كل إدخال (/atom:entry/atom:updated
)، ولكن هناك مشكلتان في استخدام الطابع الزمني للتحديث:
- يعمل فقط مع التحديثات وليس عمليات الحذف.
- وتفرض هذه السياسة على التطبيقات استخدام قيم التاريخ/الوقت كمعرّفات إصدارات، ما يصعّب تحديث بيانات Google بالإضافة إلى العديد من متاجر البيانات الحالية.
المصادقة
عندما يحاول عميل الوصول إلى خدمة، قد يحتاج إلى تقديم بيانات اعتماد المستخدم إلى الخدمة، لتوضيح أن المستخدم لديه الصلاحية لتنفيذ الإجراء المعني.
يعتمد الأسلوب الذي يجب أن يستخدمه العميل للمصادقة على نوع البرنامج:
- يجب أن يستخدم تطبيق سطح المكتب نظام مصادقة خاصًا بـ Google يسمى مصادقة الحساب للتطبيقات المثبتة (المعروف أيضًا باسم "ClientLogin"). (يجب ألا يستخدم العملاء الذين يستخدمون الويب هذا النظام).
- على العميل المستند إلى الويب، مثل الواجهة الأمامية لخدمة بيانات Google، استخدام نظام مصادقة خاص بـ Google يُسمى وكيل مصادقة الحساب للتطبيقات المستندة إلى الويب (المعروف أيضًا باسم "AuthSub").
في نظام ClientLogin، يطلب عميل سطح المكتب من المستخدم بيانات اعتماده، ثم يرسل بيانات الاعتماد هذه إلى نظام مصادقة Google.
إذا نجحت المصادقة، سيعرض نظام المصادقة رمزًا مميزًا يستخدمه العميل لاحقًا (في عنوان مصادقة HTTP) عندما يرسل طلبات بيانات Google.
في حال تعذُّر المصادقة، يعرض الخادم رمز الحالة "403 محظور"، بالإضافة إلى رأس مصادقة WWW الذي يحتوي على اختبار التحقُّق المُطبَّق على عملية المصادقة.
ويعمل نظام AuthSub بالطريقة نفسها، إلا أنه يربط المستخدم بخدمة Google التي تطلب بيانات الاعتماد، بدلاً من طلب بيانات الاعتماد من المستخدم. بعد ذلك تعرض الخدمة رمزًا مميزًا يمكن لتطبيق الويب استخدامه، وتتمثل فائدة هذا الأسلوب في أن Google (وليس الواجهة الأمامية للويب) تعالج بيانات اعتماد المستخدم وتخزنها بشكل آمن.
للحصول على تفاصيل حول أنظمة المصادقة هذه، اطلع على وثائق نظرة عامة على مصادقة بيانات Google أو مصادقة حساب Google.
حالة الجلسة
تتطلب العديد من عمليات تنفيذ منطق النشاط التجاري معدل مدة الجلسة - تتبع حالة جلسة المستخدم.
يتتبع Google حالة الجلسة بطريقتين: استخدام ملفات تعريف الارتباط، واستخدام رمز مميز يمكن إرساله كمعلمة طلب بحث. تحقّق كلتا الطريقتين التأثير نفسه. نوصي بأن يدعم العملاء إحدى طرق تتبع حالة الجلسة هذه (التي تكفي واحدة منها). إذا كان العميل لا يستخدم أيًا من هاتين الطريقتين، فسيستمر هذا العميل في العمل مع خدمات البيانات من Google، ولكن قد يؤثر الأداء مقارنةً بالعملاء الذين يعتمدون هذه الطرق. على وجه التحديد، إذا كان البرنامج لا يتيح هذه الطرق، يؤدي كل طلب إلى إعادة توجيه، وبالتالي يتم إرسال كل طلب (وأي بيانات مرتبطة به) إلى الخادم مرتين، ما يؤثر في أداء كل من البرنامج والخادم.
تتعامل مكتبات برامج Google مع حالة الجلسة نيابةً عنك، لذلك إذا كنت تستخدم مكتباتنا، لن تحتاج إلى اتخاذ أي إجراء للحصول على دعم حالة الجلسة.
مراجع إضافية
قد تجد مستندات الجهات الخارجية التالية مفيدة:
- مقارنة بين Atom وRSS
- نظرة عامة على Atom من IBM
- إضافات Dublin Core إلى RSS
- تعريفات الطريقة HTTP 1.1؛ مواصفات
GET
وPOST
وPUT
وDELETE
- تعريفات رمز الحالة لبروتوكول HTTP 1.1
- كيفية إنشاء بروتوكول REST
- تصميم خدمات الويب بطريقة REST
- مقدمة فنية عن XML
- مساحات أسماء XML حسب المثال