amp-access
Description
Provides an AMP paywall and subscription support.
Required Scripts
<script async custom-element="amp-access" src="https://cdn.ampproject.org/v0/amp-access-0.1.js"></script>
AMP Access أو "إتاحة الاشتراك ونظام حظر الاشتراك غير المدفوع في صفحات AMP" يمنح الناشرين تحكمًا في المحتوى الذي يمكن للقارئ الوصول إليه والقيود المفروضة على هذا الوصول، بناء على حالة اشتراك القارئ وعدد مرات المشاهدة وعوامل أخرى.
amp-access
مدى التوفر | مستقر |
النص البرمجي المطلوب | <script async custom-element="amp-access" src="https://cdn.ampproject.org/v0/amp-access-0.1.js"></script> |
أمثلة | مثال توضيحي لترميز amp-access |
العلاقة بالإضافة amp-subscriptions
توفر الإضافة amp-subscriptions
ميزات مشابهة لميزات amp-access
. ومع ذلك، فهي تتيح عمل بروتوكول وصول أكثر تخصصًا لنظام حظر الاشتراك غير المدفوع. في ما يلي بعض أهم الاختلافات:
- استجابة استحقاقات
amp-subscriptions
مشابهة لتفويض amp-access لكنها محددة وموحدة بشكل صارم. - تتيح الإضافة
amp-subscriptions
تهيئة عدة خدمات للصفحة للمشاركة في قرارات منح الوصول/نظام حظر الاشتراك غير المدفوع. ويتم تنفيذ القرارات بشكل متزامن ومرتب حسب الأولوية بناءً على الخدمة التي تعرض الاستجابة الإيجابية. - مسموح لعارضي صفحات AMP توفير
amp-subscriptions
كدليل لإثبات الحق في الوصول، وهو عبارة عن استجابة بالتفويض الموقّع بناء على الاتفاقية المستقلة مع الناشرين. - في
amp-subscriptions
، يتم توحيد ترميز المحتوى، ما يسمح للتطبيقات وبرامج الزحف بسهولة رصد أقسام المحتوى المدفوعة.
بسبب توحيد الترميز وإتاحة تعدد موفري الخدمة والعارض المُحَسن، ننصح باستخدام amp-subscriptions
في عمليات التنفيذ لدى الناشرين الجدد والموفرين الجدد لخدمة نظام حظر الاشتراك غير المدفوع.
الحل
يمنح الحل المقترح للناشر تحكمًا في القرارات والتدفقات التالية: - إنشاء المستخدِمين والحفاظ عليهم - التحكم في قياس حصة القراءة المجانية (السماح بعدد معين من المشاهدات المجانية) - مسؤولية تدفق تسجيل الدخول - مسؤولية مصادقة المستخدِم - مسؤولية قواعد الوصول والتفويض - المرونة في الوصول إلى المعلَمات على أساس المستندات
يتكون الحل من المكونات التالية:
- معرّف قارئ AMP: معرّف فريد للقارئ كما تراه AMP يتم توفيره من خلال منظومة AMP المتكاملة.
- ترميز المحتوى المتوفر بحق الوصول: يكتبه الناشر لتحديد أقسام لمستند التي تكون مرئية وظروف ذلك.
- نقطة نهاية التفويض: يقدمها الناشر لعرض استجابة توضّح قسم المستند الذي يمكن للقارئ استخدامه.
- نقطة نهاية الرد على فحص الاتصال: يوفرها الناشر وتستخدَم لإرسال مرة ظهور "مشاهدة" للمستند.
- رابط تسجيل الدخول وصفحة تسجيل الدخول: يسمحان للناشر بمصادقة القارئ وربط هويته "بمعرّف قارئ AMP".
تعرض "ذاكرة التخزين المؤقت لصفحات AMP من Google" المستند للقارئ مع إخفاء بعض الأقسام وذلك باستخدام "ترميز المحتوى المتوفر بحق الوصول". يطلب "وقت تشغيل AMP" "نقطة نهاية التفويض" ويستخدم الاستجابة لعرض أقسام مختلفة أو إخفائها حسبما يحدده "ترميز المحتوى المتوفر بحق الوصول". بعد عرض المستند للقارئ، يطلب "وقت تشغيل AMP" "نقطة نهاية الرد على فحص الاتصال" التي يمكن للناشر استخدامها لتعديل المقياس التنازلي لعدد القراءات (عدد المشاهدات المجانية التي تم استخدامها).
ويتيح أيضًا الحل للناشر وضع "رابط تسجيل الدخول" في مستند AMP الذي يؤدي إلى تشغيل "صفحة تسجيل الدخول/الاشتراك"، والتي يمكن للناشر فيها مصادقة القارئ وربط هويته "بمعرّف قارئ AMP" في النظام لديه.
يعمل هذا الحل في الأساس على إرسال المستند الكامل (ولكن مع حجبه) إلى القارئ وعرض/إخفاء أقسام مقيدة منه بناءً على استجابة "التفويض". ومع ذلك، يوفر هذا الحل أيضًا الخيار "عرض" عند إمكانية استثناء الأقسام المقيَّدة من العرض الأولي للمستند وإمكانية تنزيلها بعد تأكيد التفويض.
تتطلب إتاحة AMP Access أن ينفذ الناشر المكونات المذكورة أعلاه. ويلزم "ترميز المحتوى المتوفر بحق الوصول" و"نقطة نهاية التفويض". أما "نقطة نهاية الرد على فحص الاتصال" و"صفحة تسجيل الدخول" فهما مكونان اختياريان.
معرّف قارئ AMP
يقدم AMP Access مفهوم معرّف القارئ للمساعدة في الوصول إلى الخدمات وحالات الاستخدام.
"معرّف القارئ" عبارة عن معرّف فريد ومجهول تنشئه منظومة AMP المتكاملة. وهو فريد لكل زوج من القارئ/الناشر - لذا يتم التعرّف على القارئ الواحد بشكل مختلف لدى ناشرَين مختلفَين. وهو أيضًا معرّف غير قابل للعكس. هذا ويتم تضمين معرّف القارئ في جميع الاتصالات بين AMP/الناشر ويتمتع بمستوى عالٍ من الإنتروبيا. يمكن للناشرين استخدام معرّف القارئ للتعرّف على القارئ وتعيينه على أنظمة الهوية لديهم.
يتم إنشاء معرّف القارئ على جهاز المستخدم بهدف أن يدوم طويلاً. ومع ذلك، فإنه يتّبع قواعد مساحة التخزين العادية للمتصفح، بما في ذلك قواعد نوافذ التصفح المتخفي. تبلغ دورة الحياة المقصودة لمعرّف القارئ سنة واحدة من الاستخدام أو إلى أن يمسح المستخدِم ملفات تعريف الارتباط لديه. لا تتم حاليًا مشاركة معرّفات القارئ بين الأجهزة.
يتم إنشاء معرّف القارئ بشكل مشابه للآلية المستخدَمة في إنشاء ExternalCID الموضحة هنا. مثال على معرّف القارئ: amp-OFsqR4pPKynymPyMmplPNMvxSTsNQob3TnK-oE3nwVT0clORaZ1rkeEz8xej-vV6
AMP Access وملفات تعريف الارتباط
يمكن للناشرين استخدام ملفات تعريف الارتباط المتعلقة بالمصادقة أو قد يعتمدون على معرّف القارئ أو الاثنين معًا.
ترميز المحتوى المتوفر بحق الوصول
يحدد "ترميز المحتوى المتوفر بحق الوصول" أقسام المحتوى المرئية أو المخفية بناء على استجابة التفويض التي تعرضها "نقطة نهاية التفويض". ويتم وصفها بسمات ترميز خاصة.
نقطة نهاية التفويض
التفويض هو نقطة نهاية يوفرها الناشر ويطلبها "وقت تشغيل AMP" أو "ذاكرة التخزين المؤقت لصفحات AMP من Google". وهي نقطة نهاية معتمدة لطريقة الطلب CORS GET. تعرض نقطة النهاية هذه معلَمات الوصول التي يمكن "لترميز المحتوى" استخدامها لإخفاء أقسام مختلفة من المستند أو عرضها.
نقطة نهاية الرد على فحص الاتصال
الرد على فحص الاتصال هو نقطة نهاية يوفرها الناشر ويطلبها "وقت تشغيل AMP" أو "ذاكرة التخزين المؤقت لصفحات AMP من Google". وهي نقطة نهاية معتمدة لطريقة الطلب CORS POST. يطلب "وقت تشغيل AMP" نقطة النهاية هذه تلقائيًا عندما يبدأ القارئ في عرض المستند. كما تُطلب هذه النقطة أيضًا بعد أن يكمل القارئ "تدفق تسجيل الدخول" بنجاح. ويأتي تعديل معلومات قياس حصة القراءة المجانية من بين الأهداف الرئيسية لاستخدام الناشر للرد على فحص الاتصال.
يُذكر أن الرد على فحص الاتصال اختياري. ويمكن إيقافه من خلال تعيين خاصية التهيئة noPingback
على true
.
صفحة تسجيل الدخول ورابط تسجيل الدخول
ينفذ الناشر "صفحة تسجيل الدخول" ويعرضها ثم يطلبها "وقت تشغيل AMP". وتظهر عادة على شكل مربع حوار في المتصفح.
يتم تشغيل "صفحة تسجيل الدخول" عندما ينقر القارئ على "رابط تسجيل الدخول" والذي يمكن للناشر وضعه في أي مكان في المستند.
مواصفات الإصدار 0.1
التهيئة
تتم تهيئة جميع نقاط النهاية في مستند AMP في صورة كائن JSON في HEAD للمستند:
<script id="amp-access" type="application/json">
{
"property": value,
...
}
</script>
يتم تحديد الخصائص التالية في هذه التهيئة:
الخاصية | القيم | الوصف |
---|---|---|
authorization | <URL> | عبارة عن عنوان HTTPS URL لنقطة نهاية التفويض. |
pingback | <URL> | عبارة عن عنوان HTTPS URL لنقطة نهاية الرد على فحص الاتصال. |
noPingback | true/false | عندما تكون القيمة true، يتم إيقاف الرد على فحص الاتصال. |
login | <URL> أو <Map[string، URL]> | عنوان HTTPS URL "لصفحة تسجيل الدخول" أو مجموعة من عناوين URL لأنواع مختلفة من صفحات تسجيل الدخول. |
authorizationFallbackResponse | <object> | عبارة عن كائن JSON يُستخدَم بدلاً من استجابة التفويض في حال تعذُّر الحصول عليها. |
authorizationTimeout | <number> | عبارة عن المهلة (بالملي ثانية) التي يُعتبر بعدها طلب التفويض متعذر الحصول عليه. القيمة التلقائية هي 3000. يُسمح بالقيم الأكبر من 3000 في بيئة تطوير البرامج فقط. |
type | "client" أو "server" | القيمة التلقائية هي “client”. لا يزال الخيار "server" محل نقاش بشأن تصميمه، وسيتم تعديل هذه المستندات عندما يصبح جاهزًا. |
namespace | string | القيمة التلقائية أن يكون فارغًا. ويكون Namespace مطلوبًا في حال تحديد عدة موفري خدمات للوصول. |
تحدد القيم <URL> عناوين HTTPS URL مع متغيرات الاستبدال. يتم تناول هذه المتغيرات بمزيد من التفصيل في القسم متغيرات عناوين URL للوصول أدناه.
في ما يلي مثال لتهيئة AMP Access:
<script id="amp-access" type="application/json">
{
"authorization":
"https://pub.com/amp-access?rid=READER_ID&url=SOURCE_URL",
"pingback":
"https://pub.com/amp-ping?rid=READER_ID&url=SOURCE_URL",
"login":
"https://pub.com/amp-login?rid=READER_ID&url=SOURCE_URL",
"authorizationFallbackResponse": {"error": true}
}
</script>
تعدد موفري خدمات الوصول
من الممكن تحديد عدة موفرين لخدمات وصول باستخدام مصفوفة بدلاً من كائن واحد وتوفير namespace
لكل منهم.
<script id="amp-access" type="application/json">
[
{
"property": value,
...
"namespace": value
},
...
]
</script>
متغيرات عناوين URL للوصول
عند تهيئة عناوين URL لنقاط النهاية المختلفة، يمكن للناشر استخدام متغيرات الاستبدال. يمكن العثور على قائمة كاملة بتعريفات هذه المتغيرات في مواصفات متغيرات AMP. بالإضافة إلى هذا، تزيد هذه المواصفات متغيرات خاصة بالوصول، مثل READER_ID
وAUTHDATA
. يوضّح الجدول أدناه بعضًا من أكثر المتغيرات صلة:
المتغير | الوصف |
---|---|
READER_ID | عبارة عن معرف قارئ AMP. |
AUTHDATA(field) | عبارة عن قيمة الحقل في استجابة التفويض. |
RETURN_URL | عبارة عن عنصر نائب لعنوان URL للعرض يحدده "وقت تشغيل AMP" لمربع حوار تسجيل الدخول لعرضه. |
SOURCE_URL | عبارة عن عنوان URL المصدر لمستند AMP هذا. إذا تم عرض المستند من CDN، سيكون AMPDOC_URL عبارة عن عنوان CDN URL في حين سيكون SOURCE_URL هو عنوان URL للمصدر الأصلي. |
AMPDOC_URL | عبارة عن عنوان URL لمستند AMP هذا. |
CANONICAL_URL | عبارة عن عنوان URL الأساسي لمستند AMP هذا. |
DOCUMENT_REFERRER | عبارة عن عنوان URL للمُحيل. |
VIEWER | عبارة عن عنوان URL لعارِض صفحات AMP. |
RANDOM | عبارة عن عدد عشوائي. ويفيد في تجنب التخزين المؤقت للمتصفح. |
في ما يلي مثال لعنوان URL مضاف إليه "معرّف القارئ" و"عنوان URL الأساسي" و"معلومات عن المصدر" وcachebuster عشوائي:
https://pub.com/access?
rid=READER_ID
&url=CANONICAL_URL
&ref=DOCUMENT_REFERRER
&_=RANDOM
يتوفر المتغير AUTHDATA لنقطة نهاية "الرد على فحص الاتصال" و"عناوين URL لتسجيل الدخول". ويسمح بمرور أي حقل في استجابة التفويض باعتباره معلَمة عنوان URL. مثال لذلك: AUTHDATA(isSubscriber)
. ويُسمح أيضًا بالتعبيرات المدمجة، مثل
AUTHDATA(other.isSubscriber)
. في حال استخدام الخصائص namespace، يمكن إضافتها إلى مقدمة الحقل، مثل AUTHDATA(anamespace.afield)
.
ترميز المحتوى المتوفر بحق الوصول
يوضّح "ترميز المحتوى المتوفر بحق الوصول" أقسام المحتوى المرئية والأقسام المخفية. ويتكون من سمتَين من سمات AMP: amp-access
وamp-access-hide
التي يمكن استبدالها في أي عنصر HTML.
تقدم السمة amp-access
التعبير الذي يعطي القيمة true أو false بناء على استجابة التفويض التي تعرضها "نقطة نهاية التفويض". تشير القيمة الناتجة إلى ما إذا كان العنصر ومحتواه مرئيين أم لا.
قيمة amp-access
عبارة عن تعبير منطقي معرَّف بلغة تشبه SQL. هذا ويتم تعريف القواعد في الملحق أ، وهي كالتالي:
<div amp-access="expression">...</div>
تشير الخصائص والقيم إلى خصائص وقيم استجابة التفويض التي عرضتها "نقطة نهاية التفويض". يوفر هذا نظامًا مرنًا لدعم سيناريوهات وصول مختلفة. في حال استخدام الخصائص namespace، ضعها في مقدمة أسماء الخصائص، مثل: anamespace.aproperty
.
يمكن استخدام السمة amp-access-hide
لتحسين إخفاء العنصر قبل تلقي استجابة التفويض التي يمكن أن تؤدي إلى عرضه. وتوفر السمة دلالات "غير مرئي تلقائيًا". قد تؤدي استجابة التفويض التي يعرضها "التفويض" لاحقًا إلى إلغاء هذه القيمة التلقائية وجعل القسم مرئيًا. عند حذف السمة amp-access-hide
، سيتم عرض/تضمين الجزء تلقائيًا. ويُذكر أنه لا يمكن استخدام السمة amp-access-hide
إلا مع السمة amp-access
.
<div amp-access="expression" amp-access-hide>...</div>
إذا تعذر "التفويض"، لا يتم تقييم التعبيرات amp-access
، ويتحدد ظهور القسم أو إخفاؤه تبعًا لحضور السمة amp-access-hide
التي وفرها المستند في البداية.
ويمكننا توسيع مجموعة السمات amp-access-*
حسب الحاجة إلى دعم الاحتياجات المختلفة لإخفاء مفاتيح فك التشفير والعرض.
إذا تعذر طلب "التفويض"، ولم يتم تحديد الاستجابة "authorizationFallbackResponse" في المستندات، لا يتم تقييم التعبيرات amp-access
، ويتحدد ظهور القسم أو إخفاؤه تبعًا لحضور السمة amp-access-hide
التي وفرها المستند في البداية.
في ما يلي مثال يعرض رابط تسجيل الدخول أو المحتوى الكامل بناء على حالة الاشتراك:
<header>
عنوان المستند
</header>
<div>
المقتطف الأول في المستند
</div>
<div amp-access="NOT subscriber" amp-access-hide>
<a on="tap:amp-access.login">اشترك الآن.</a>
</div>
<div amp-access="subscriber">
المحتوى الكامل
</div>
هنا: - subscriber حقل منطقي في استجابة التفويض التي تعرضها نقطة نهاية التفويض. ويكون هذا القسم مخفيًا تلقائيًا، وهو أمر اختياري. - يختار هذا المثال إظهار المحتوى الكامل.
في ما يلي مثال آخر يعرض إخلاء المسؤولية للقارئ بشأن حالة قياس حصة القراءة المجانية:
<section amp-access="views <= maxViews">
<template amp-access-template type="amp-mustache">
You are reading article {{views}} out of {{maxViews}}.
</template>
</section>
إليك مثال يعرض محتوى إضافي للمشتركين المتميزين:
<section amp-access="subscriptonType = 'premium'">
Shhh… No one but you can read this content.
</section>
نقطة نهاية التفويض
تتم تهيئة التفويض من خلال الخاصية authorization
في القسم تهيئة AMP Access. وهي نقطة نهاية معتمدة لطريقة الطلب CORS GET. اطّلع على أمان أصل CORS لمعرفة طريقة تأمين هذا الطلب.
يمكن أن يأخذ التفويض أي معلَمات كما هو موضح في القسم يمكن أن يأخذ التفويض أي معلَمات كما هو موضح في القسم متغيرات عناوين URL للوصول. يمكنه مثلاً تمرير "معرّف قارئ AMP" وعنوان URL للمستند. بالإضافة إلى معلَمات URL، قد يستخدم الناشر أي معلومات يمكن عادة عرضها عبر بروتوكول HTTP، مثل عنوان IP للقارئ. ويلزم تضمين READER_ID
.
تنتج نقطة النهاية هذه استجابة التفويض التي يمكن استخدامها في تعبيرات ترميز المحتوى لعرض/إخفاء أقسام مختلفة من المحتوى.
تنسيق الطلب كما يلي:
https://publisher.com/amp-access.json?
rid=READER_ID
&url=SOURCE_URL
الاستجابة عبارة عن كائن JSON حر حيث يمكنه أن يحتوي على أي خصائص وقيم مع بعض التحديدات. ونورد التحديدات في ما يلي:
- يجب أن تتطابق أسماء الخصائص مع القيود التي تضعها قواعد التعبيرات amp-access
(اطّلع على الملحق أ). ويعني هذا غالبًا أنه لا يجب أن تحتوي أسماء الخصائص على أحرف، مثل المسافات والشرطات والأحرف الأخرى التي لا تتوافق مع مواصفات "amp-access".
- يجب أن تقتصر قيم الخصائص على أحد الأنواع التالية: string وnumber وboolean.
- يمكن دمج القيم ككائنات مع قيم من نفس النوع: string وnumber وboolean.
- يجب ألا يتجاوز الحجم الإجمالي لاستجابة التفويض المتسلسلة حد 500 بايت.
- يرجى التأكد من عدم احتواء الاستجابة على أي معلومات لتحديد الهوية الشخصية أو بيانات شخصية.
في ما يلي قائمة قصيرة بالأفكار المحتملة للخصائص التي يمكن عرضها من نقطة نهاية "التفويض": - معلومات قياس حصة القراءة المجانية: عدد المشاهدات الأقصى المسموح به وعدد المشاهدات الحالي - هل سجّل القارئ الدخول أم أنه مشترك - تفاصيل أكثر عن نوع الاشتراك: أساسي أو متميز - الموقع الجغرافي: البلد أو المنطقة أو منطقة النشر المخصصة
في ما يلي مثال للاستجابة عندما لا يكون القارئ مشتركًا، وتبلغ حصته من القراءة المجانية 10 مقالات/الشهر، وقد سبق له مشاهدة 6 مقالات منها:
{
"maxViews": 10,
"currentViews": 6,
"subscriber": false
}
في ما يلي مثال للاستجابة عندما يكون القارئ قد سجّل الدخول ويتمتع باشتراك من النوع المتميز:
{
"loggedIn": true,
"subscriptionType": "premium"
}
قد يتم طلب استدعاء الإجراء عن بُعد (RPC) هذا في مرحلة العرض المسبق وبالتالي لا يجب استخدامه في مقياس عدد القراءات التنازلي لأن القارئ قد لا يرى المستند أبدًا.
بالنظر إلى اعتبار مهم آخر نجد أنه في بعض الحالات قد يحتاج "وقت تشغيل AMP" إلى طلب نقطة نهاية "التفويض" عدة مرات لكل مرة ظهور للمستند. ويمكن أن يحدث هذا إذا اعتقد "وقت تشغيل AMP" أن معلَمات الوصول للقارئ قد تغيرت بشكل كبير، مثل ما يقع بعد تدفق نجاح لتسجيل الدخول.
قد يستخدم "وقت تشغيل AMP" والإضافات استجابة التفويض لأغراض ثلاثة مختلفة:
1- عند تقييم التعبيرات amp-access
2- عند تقييم نماذج <template>
، مثل amp-mustache
3- عند توفير متغيرات إضافية للرد على فحص الاتصال وعناوين URL لصفحات تسجيل الدخول باستخدام AUTHDATA(field)
.
يطلب "وقت تشغيل AMP" نقطة نهاية "التفويض" كنقطة نهاية CORS معتمدة. وبهذا، يجب أن تنفذ بروتوكول CORS. ويجب أن تستخدم "أصل CORS" وأصل المصدر لتقييد الوصول إلى هذه الخدمة كما هو موضح في أمان أصل CORS. وقد تستخدم نقطة النهاية هذه ملفات تعريف الارتباط لدى الناشر حسب احتياجاتها. فيمكنها مثلاً الربط بين معرّف القارئ وهوية المستخدِم الخاصة لدى الناشر. ولا تحتاج AMP نفسها إلى معرفة هذا (ويُفضل عدم معرفتها). للحصول على المزيد من التفاصيل، اطّلع على مستندات معرّف قارئ AMP وAMP Access وملفات تعريف الارتباط.
يلاحظ "وقت تشغيل AMP" (أو بالأحرى المتصفح) رؤوس استجابة ذاكرة التخزين المؤقت عند طلب نقطة نهاية "التفويض". وبالتالي يمكن إعادة استخدام الاستجابات المخبأة. قد يكون هذا أمرًا يكون مرغوبًا فيه وقد لا يكون كذلك. إذا لم يكن مرغوبًا فيه، يمكن للناشر استخدام رؤوس التحكم المناسبة في ذاكرة التخزين المؤقت و/أو استبدال المتغير RANDOM
لعنوان URL لنقطة النهاية.
إذا تعذّر طلب "التفويض"، سيلجأ "وقت تشغيل AMP" إلى الخاصية "AuthorizationFallbackResponse"، إذا كانت محددة في التهيئة. في هذه الحالة، ستتم متابعة تدفق التفويض كالمعتاد باستخدام قيمة الخاصية "AuthorizationFallbackResponse" بدلاً من استجابة التفويض. أما إذا لم يتم تحديد "AuthorizationFallbackResponse"، سيتعذر تدفق التفويض، وفي هذه الحالة لن يتم تقييم تعبيرات amp-access
ويتحدد ظهور القسم أو إخفاؤه تبعًا لحضور السمة amp-access-hide
التي وفرها المستند في البداية.
يتم انتهاء مهلة طلب "التفويض" تلقائيًا ويُفتَرض أنه متعذّر الحصول عليها بعد 3 ثوانٍ.
يستخدم "وقت تشغيل AMP" فئات CSS التالية أثناء تدفق التفويض: 1- يتم تعيين فئة CSS amp-access-loading
على جذر المستند عند بدء تدفق التفويض، وتتم إزالتها عند اكتمال التفويض أو تعذُّره.
2- يتم تعيين فئة CSS amp-access-error
على جذر المستند عند تعذُّر تدفق التفويض.
في الخيار server، يتم طلب نقطة نهاية "التفويض" من خلال "ذاكرة التخزين المؤقت لصفحات AMP من Google" باعتبارها نقطة نهاية HTTPS بسيطة. ويعني هذا تعذُّر تسليم ملفات تعريف الارتباط المتعلقة بالناشر في هذه الحالة.
نقطة نهاية الرد على فحص الاتصال
تتم تهيئة الرد على فحص الاتصال من خلال الخاصية pingback
في القسم تهيئة AMP Access. وهي نقطة نهاية معتمدة لطريقة الطلب CORS POST. اطّلع على أمان أصل CORS لمعرفة طريقة تأمين هذا الطلب.
إن عنوان URL للرد على فحص الاتصال اختياري. فيمكن إيقافه باستخدام "noPingback": true
.
يمكن أن يأخذ عنوان URL للرد على فحص الاتصال أي معلَمات كما هو موضح في القسم متغيرات عناوين URL للوصول. يمكنه مثلاً تمرير "معرّف قارئ AMP" وعنوان URL للمستند. ويلزم تضمين READER_ID
.
لا ينتج الرد على فحص الاتصال استجابة حيث يتجاهل "وقت التشغيل AMP" أي استجابة.
يتم طلب نقطة نهاية الرد على فحص الاتصال عندما يبدأ القارئ في عرض المستند وبعد أن يكمل "تدفق تسجيل الدخول" بنجاح.
قد يختار الناشر استخدام الرد على فحص الاتصال: - للعد التنازلي لعدد المشاهدات المجانية للصفحة - لتعيين "معرف قارئ AMP" مع هوية الناشر، لأن الرد على فحص الاتصال قد يحتوي على ملف تعريف الارتباط المتعلقة بالناشر باعتباره نقطة نهاية CORS معتمدة
يأخذ الطلب التنسيق التالي:
https://publisher.com/amp-pingback?
rid=READER_ID
&url=SOURCE_URL
صفحة تسجيل الدخول
تتم تهيئة عنوان URL "لصفحة تسجيل الدخول" من خلال الخاصية CORS
في القسم تهيئة AMP Access.
يمكن أن تحدد التهيئة عنوان URL واحد لصفحة تسجيل الدخول أو خريطة عناوين URL لصفحات تسجيل الدخول والتي يتم تحديدها حسب نوع تسجيل الدخول. مثال لعنوان URL واحد لصفحة تسجيل الدخول:
{
"login": "https://publisher.com/amp-login.html?rid={READER_ID}"
}
مثال على عدة عناوين URL لصفحات تسجيل الدخول:
{
"login": {
"signin": "https://publisher.com/signin.html?rid={READER_ID}",
"signup": "https://publisher.com/signup.html?rid={READER_ID}"
}
}
يمكن أن يأخذ عنوان URL أي معلَمات كما هو موضح في القسم يمكن أن يأخذ عنوان URL أي معلَمات كما هو موضح في القسم متغيرات عناوين URL للوصول. يمكنه مثلاً تمرير "معرّف قارئ AMP" وعنوان URL للمستند. يمكن استخدام استبدال طلب البحث RETURN_URL
لتحديد معامِلات طلب البحث لعنوان العرض، مثل ret=RETURN_URL
. يلزم تقديم عنوان URL للعرض، وفي حال عدم تحديد الاستبدال RETURN_URL
، ستتم تلقائيًا تعبئته بالاسم التلقائي لمعامِلات طلب البحث "return".
صفحة تسجيل الدخول هي ببساطة صفحة ويب عادية ليس لها قيود خاصة، بخلاف أنه يجب أن تعمل كمربع حوار في المتصفح أيضًا. يمكن الاطّلاع على القسم تدفق تسجيل الدخول للحصول على المزيد من التفاصيل.
يأخذ الطلب التنسيق التالي:
https://publisher.com/amp-login.html?
rid=READER_ID
&url=SOURCE_URL
&return=RETURN_URL
يُذكر أن "وقت تشغيل AMP" يضيف معلمة عنوان URL "return" تلقائيًا في حال عدم تحديد الاستبدال RETURN_URL
. بعد أن تكمل "صفحة تسجيل الدخول" عملها، يجب أن تعيد التوجيه إلى "Return URL" المحدد بالتنسيق التالي:
RETURN_URL#success=true|false
يُرجى ملاحظة استخدام معلَمة التجزئة "success" لعنوان URL. تكون القيمة إما “true” أو “false” حسب نجاح تسجيل الدخول أو تركه. عادة ما ترسل "صفحة تسجيل الدخول"، متى أمكن، الإشارة في حالات النجاح أو الإخفاق.
في حال عرض الإشارة success=true
، سيعيد "وقت تشغيل AMP" الطلبات إلى نقاط نهاية "التفويض" و"الرد على فحص الرد" لتعديل حالة المستند والإبلاغ عن "المشاهدة" مع الملف الشخصي الجديد للوصول.
رابط تسجيل الدخول
قد يقرر الناشر وضع "رابط تسجيل الدخول" في أي مكان في محتوى المستند.
تتم تهيئة عنوان URL واحد "لصفحة تسجيل الدخول" أو أكثر من خلال الخاصية login في القسم تهيئة AMP Access.
يمكن الإعلان عن رابط "تسجيل الدخول" على أي عنصر HTML يتيح السمة "on". عادة ما يكون هذا عنصر ارتساء أو عنصر زر. عند تهيئة عنوان URL واحد لصفحة تسجيل الدخول، يكون التنسيق كالتالي:
<a on="tap:amp-access.login">Login or subscribe</a>
عند تهيئة عدة عناوين URL لصفحة تسجيل الدخول، يكون التنسيق كالتالي tap:amp-access.login-{type}
. مثال:
<a on="tap:amp-access.login-signup">Subscribe</a>
عند استخدام خصائص namespace، يكون التنسيق tap:amp-access.login-{namespace}
أو tap:amp-access.login-{namespace}-{type}
.
لا تميِّز AMP بين تسجيل الدخول والاشتراك. ويمكن للناشر تهيئة هذا التمييز باستخدام عدة عناوين URL/ روابط لتسجيل الدخول أو يمكن تنفيذ ذلك من جانبه.
التكامل مع amp-analytics
يتم توثيق التكامل مع amp-analytics في amp-access-analytics.md.
أمان أصل CORS
نقاط نهاية "التفويض" و"الرد على فحص الاتصال" هي نقاط نهاية CORS ويجب أن تنفذ بروتوكول الأمان الموضح في مواصفات أمان CORS في صفحات AMP.
قياس حصة القراءة المجانية
"قياس حصة القراءة المجانية" هو نظام يتم بموجبه العرض المجاني لمحتوى مدفوع حيث يشاهد القارئ المستند عدة مرات خلال فترة زمنية. وبعد الوصول إلى الحصة، يظهر للقارئ رفض بموجب نظام حظر الاشتراك غير المدفوع، ويظهر للقارئ جزء من المحتوى مع رسالة تحث على الشراء ورابطٍ للاشتراك/تسجيل الدخول. يمكنك مثلاً تحديد قياس حصة القراءة المجانية بأنه "يمكن للقارئ قراءة 10 مقالات في الشهر مجانًا".
يوفر AMP Access التسهيلات التالية لتنفيذ الوصول المرتبط بحصة قراءة مجانية:
1- يجب استخدام READER_ID لتخزين المعلومات المتعلقة بقياس حصة القراءة المجانية. ويجب تخزين هذه البيانات على الخادم لعدم قدرة الناشر على الاعتماد دائمًا على تعيين ملف تعريف الارتباط في سياق تابع لجهة خارجية.
2- لا يمكن تعديل "عدد القراءات" إلا في نقطة نهاية "الرد على فحص الاتصال".
3- يتم احتساب المستندات الفريدة فقط من الحصة. بمعنى آخر تُحتسب إعادة تحديث نفس المستند لعشرة مرات مشاهدة واحدة. لذلك، يمكن لنقاط نهاية "التفويض" و"الرد على فحص الاتصال" إدخال SOURCE_URL
أو متغيرات عناوين URL مشابهة. اطّلع على متغيرات عناوين URL للوصول.
أول نقرة مجانًا
يمكن الاطّلاع على شرح لسياسة "أول نقرة مجانًا من Google" هنا، مع توضيح تفصيلي لأحدث التعديلات هنا.
لتنفيذ سياسة "أول نقرة مجانًا"، يجب على الناشر (1) القدرة على تحديد خدمة الإحالة لكل مرة مشاهدة و(2) القدرة على حساب عدد المشاهدات لكل قارئ في اليوم.
تغطي مواصفات AMP Access الخطوتين. يمكن إدخال المُحيل في عناوين URL "للتفويض" و"الرد على فحص الاتصال" باستخدام استبدال عنوان URL DOCUMENT_REFERRER
كما هو موضح في متغيرات عناوين URL للوصول. ويمكن تنفيذ عدد المشاهدات باستخدام نقطة نهاية "الرد على فحص الاتصال" على جانب الخادم. ويشبه هذا إلى حد كبير تنفيذ قياس حصة القراءة المجانية الموضح في قياس حصة القراءة المجانية.
تدفق تسجيل الدخول
تشغِل AMP "مربع حوار تسجيل الدخول" كنافذة أو نافذة منبثقة أو علامة تبويب تابعة للطرف الأول. يجب أن يحاول عارِضو صفحات AMP، متى أمكن، تشغيل "مربع حوار تسجيل الدخول" في سياق المتصفح حتى يتمكن من الاستفادة من واجهات برمجة التطبيقات الأعلى للمتصفح.
يبدأ "وقت تشغيل AMP" تدفق تسجيل الدخول عند تنشيط القارئ لرابط تسجيل الدخول وتصف الخطوات التالية هذا: يعمل "وقت تشغيل AMP" أو عارض "عنوان URL لصفحة تسجيل الدخول" المحدد على فتح "مربع حوار تسجيل الدخول" (نافدة تابعة للطرف الأول). يحتوي عنوان URL على معامل طلب البحث الإضافي "Return URL" (&return=RETURN_URL
). يمكن أيضًا توسيع عدد من المعاملات الأخرى في عنوان URL، مثل "معرّف القارئ". ويمكن الاطّلاع على مزيد من التفاصيل في القسم صفحة تسجيل الدخول.
2- يعرض الناشر صفحة حرة لتسجيل الدخول.
3- يتّبع القارئ خطوات تسجيل الدخول، مثل إدخال اسم المستخدم/كلمة المرور، أو يستخدم تسجيل الدخول بشبكة تواصل اجتماعية.
4- يقدّم القارئ تسجيل الدخول. يستكمل الناشر المصادقة ويعيّن ملفات تعريف الارتباط وفي النهاية يُعيد توجيه القارئ إلى "عنوان URL للعرض" المطلوب مسبقًا. تحتوي عملية إعادة التوجيه على معلَمة تجزئة success
خاصة بعنوان URL والتي تكون true
أو false
.
5- يتّبع "مربع حوار تسجيل الدخول" إعادة التوجيه إلى "عنوان URL للعرض".
6- يُعيد "وقت تشغيل AMP" تفويض المستند.
تتطلب الخطوات من 2-5 فقط المعالجة من الناشر: يوفر الناشر صفحة تسجيل الدخول الخاصة به فقط ويضمن إعادة التوجيه الصحيحة بمجرد اكتماله تسجيل الدخول. لا توجد قيود خاصة مفروضة على صفحة تسجيل الدخول، سوى وجوب عملها كمربع حوار بشكل جيد.
ويجب كالمعتاد تضمين "معرّف القارئ" في الطلب المُرسَل إلى "صفحة تسجيل الدخول" ويمكن أن يستخدمه الناشر لتحديد الهوية. وباعتباره نافذة تابعة للطرف الأول، سيتلقى الناشر أيضًا ملف تعريف الارتباط وسيتمكن من تعيينها. إذا اتضح أن القارئ قد سجّل الدخول من قبل على جانب الناشر، ننصح أن يعيد الناشر التوجيه على الفور إلى "عنوان URL للعرض" مع الاستجابة success=true
.
مصطلحات AMP
- مستند AMP - مستند HTML الذي يتبع تنسيق AMP وتم التحقق منه باستخدام "مدقق AMP ". وتكون "مستندات AMP " قابلة للتخزين المؤقت في "ذاكرة التخزين المؤقت لصفحات AMP في Google".
- مدقق AMP - برنامج كمبيوتر يُجري تحليلاً ثابتًا لمستند HTML ويعرض نتيجة النجاح أو الإخفاق حسب مدى توافق المستند مع التنسيق AMP.
- وقت تشغيل AMP - وقت تشغيل جافا سكريبت الذي ينفذ "مستند AMP"
- ذاكرة التخزين المؤقت لصفحات AMP من Google - إنشاء وكلاء لذاكرة التخزين المؤقت لمستندات AMP.
- عارِض صفحات AMP - الويب أو تطبيق محلي يعرض/يتضمن مستندات AMP
- Publisher.com - الموقع الإلكتروني لناشر AMP
- نقطة نهاية CORS - نقطة نهاية HTTPS مشتركة المصدر. اطّلع على https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS للحصول على مزيد من المعلومات. ويمكنك مراجعة أمان أصل CORS لمعرفة خطوات تأمين هذه الطلبات.
- القارئ - الشخص الفعلي الذي يعرض مستندات AMP.
- العرض المسبق لصفحات AMP - قد يستفيد عارِضو صفحات AMP من ميزة العرض المسبق التي تتيح عرض مستند مخفي قبل إمكانية ظهوره. وتعزز هذه الميزة الأداء بشكل كبير. ولكن من المهم أن تضع في الحسبان أن العرض المُسبَق للمستند لا يمثل مرة مشاهدة لاحتمال عدم رؤية القارئ للمستند أصلاً.
التنقيحات
- 2 أيلول (سبتمبر) 2016: خاصية التهيئة "noPingback" والرد على فحص الاتصال الاختياري
- 3 آذار (مارس) 2016: إعادة إرسال الرد على فحص الاتصال بعد تسجيل الدخول (الإصدار 0.5)
- 19 شباط (فبراير) 2016: تصحيح أمثلة لإزالة
{}
من استبدالات متغيرات عناوين URL - 2016-15 شباط (فبراير) 2016: تتيح التهيئة ونقطة نهاية التفويض الآن الخاصية "authorizationFallbackResponse" التي يمكن استخدامها عند تعذُّر التفويض.
- 2016-11 شباط (فبراير): مهلة طلب التفويض في نقطة نهاية التفويض
- 2016-11 شباط (فبراير): يُسمح الآن بمراجع الحقول المدمجة، مثل
object.field
. - 9 شباط (فبراير) 2016: قسما أول نقرة مجانًا وقياس حصة القراءة المجانية
- 3 شباط (فبراير) 2016: تمت إضافة مواصفات أمان "أصل المصدر" إلى أمان أصل CORS.
- 1 شباط (فبراير) 2016: إمكانية تخصيص معامِل طلب البحث "return" "لصفحة تسجيل الدخول" باستخدام استبدال عنوان URL RETURN_URL.
الملحق أ: قواعد تعبيرات "amp-access"
يوفر الملف access-expr-impl.jison أحدث قواعد BNF.
في ما يلي المقتطف الأساسي لهذه القواعد:
search_condition:
search_condition OR search_condition
| search_condition AND search_condition
| NOT search_condition
| '(' search_condition ')'
| predicate
predicate:
comparison_predicate | truthy_predicate
comparison_predicate:
scalar_exp '=' scalar_exp
| scalar_exp '!=' scalar_exp
| scalar_exp '<' scalar_exp
| scalar_exp '<=' scalar_exp
| scalar_exp '>' scalar_exp
| scalar_exp '>=' scalar_exp
truthy_predicate: scalar_exp
scalar_exp: literal | field_ref
field_ref: field_ref '.' field_name | field_name
literal: STRING | NUMERIC | TRUE | FALSE | NULL
يُذكر أنه يتم تقييم تعبيرات amp-access
من خلال "وقت تشغيل AMP" و"ذاكرة التخزين المؤقت لصفحات AMP من Google". وهذا ليس جزءًا من المواصفات التي يحتاج الناشر إلى تنفيذها. فهي مدرجة هنا لأغراض توفير المعلومات فقط.
المناقشة المُفصلَة
سيتناول هذا القسم الشرح التفصيلي للتصميم الأساسي لمواصفات amp-access كما سيبين خيارات التصميم. وسيكون متوفرًا قريبًا.
التحقق
اطّلع على قواعد amp-access في مواصفات مدقق AMP.
لقد قرأت هذا المستند عشرات المرات ولكن ألم يُجِب عن جميع أسئلتك؟ ربما حصل ذات الأمر مع أشخاص آخرين: تواصل معهم على Stack Overflow.
الذهاب إلى Stack Overflow هل وجدت خطأ أو تفتقد لميزة؟يشجع مشروع AMP مشاركتك ومساهمتك بشدة! ونأمل أن تكون مشاركًا دائمًا في مجتمعنا مفتوح المصدر، ولكننا نشجع أيضًا المساهمات التي تحدث لمرة واحدة في الأمور التي تتحمس لها.
الانتقال إلى GitHub