ملاحظة: يقدّم الامتثال لسياسات المطوّرين في YouTube إرشادات وأمثلة لمساعدتك في ضمان اتّباع برامج API الخاصة بك لأجزاء معيّنة من بنود وسياسات خدمات YouTube API (بنود الخدمة الخاصة بواجهة برمجة التطبيقات). يقدّم الدليل معلومات حول كيفية تطبيق YouTube لبعض جوانب بنود خدمة واجهة برمجة التطبيقات، ولكنّه لا يحلّ محلّ أي مستندات حالية.
يحدّد هذا المستند الحد الأدنى من المتطلبات الوظيفية لبرامج عملاء واجهة برمجة التطبيقات التي تنفّذ ميزات معيّنة من خدمات YouTube API أو تتيح الوصول إليها ("برامج عملاء واجهة برمجة التطبيقات").
تضمن هذه المتطلبات والإرشادات أن تقدّم برامج API تجربة مستخدم متّسقة تحمي مصالح مستخدمي YouTube ومالكي المحتوى والمعلِنين. تشكّل هذه القواعد جزءًا لا يتجزأ من بنود خدمة YouTube API ويجب اتّباعها عند تطوير أي برامج تستخدم واجهات برمجة التطبيقات وتنفيذها.
يُرجى العِلم أنّ المتطلبات الواردة في هذا المستند ستتغيّر لنتمكّن من ضمان تقديم تجارب أفضل للمستخدمين مع ميزات YouTube الحالية. وستتغيّر أيضًا استجابةً للميزات الجديدة والمعدَّلة على YouTube. في بعض الأحيان، قد تتطلّب منك هذه التغييرات تعديل "برامج العملاء لواجهة برمجة التطبيقات" لتلبية المتطلبات الجديدة. سيسجّل سجلّ مراجعات بنود الخدمة أي تغييرات، لذا يُرجى مراجعة هذا المستند بشكل متكرّر أو الاشتراك في خلاصة RSS الخاصة به للتأكّد من معرفة التغييرات التي قد تؤثّر في "برامج واجهة برمجة التطبيقات" بسرعة.
بالإضافة إلى المتطلبات الواردة في هذا المستند، ننصحك بشدة باتّباع أفضل الممارسات الموضّحة في سياسات خدمات YouTube API والمناقشة في مواضع أخرى من مستندات خدمات YouTube API. حتى عندما لا تكون هذه الممارسات مطلوبة بشكل صارم، فإنّها تساعد عملاء API في استرداد البيانات بشكل أسرع من الأخطاء وتحسين استخدام الحصة المخصّصة لهم إذا كانوا يستخدمون خدمات YouTube API التي تخصص حصة. في الوقت نفسه، تساعد هذه الممارسات في ضمان سلامة منظومة YouTube المتكاملة، والأهم من ذلك، توفير أفضل تجربة ممكنة لمستخدمي "برامج واجهة برمجة التطبيقات" و"تطبيقات YouTube".
مشغّل YouTube المضمّن وتشغيل الفيديوهات
تتعلّق المتطلبات الواردة في هذا القسم على وجه التحديد بمشغّلات YouTube المضمّنة. تتضمّن سياسات خدمات YouTube API أيضًا عدة سياسات ذات صلة بعملاء API الذين يشغّلون محتوى سمعيًا بصريًا على YouTube.
هوية العميل وبيانات الاعتماد في واجهة برمجة التطبيقات
يجب أن تقدّم "عملاء API" الذين يستخدمون مشغّل YouTube المضمّن (بما في ذلك YouTube IFrame Player API) معلومات التعريف من خلال عنوان الطلب HTTP Referer
. في بعض البيئات، سيضبط المتصفّح HTTP Referer
تلقائيًا، ولا تحتاج برامج API Clients إلا إلى التأكّد من عدم ضبط Referrer-Policy
بطريقة تحظر قيمة Referer
. ينصح YouTube باستخدام strict-origin-when-cross-origin
Referrer-Policy، وهو الإعداد التلقائي في العديد من المتصفّحات.
وبالمثل، عند دمج مشغّل YouTube المضمّن في نافذة تم إنشاؤها باستخدام JavaScript window.open
، يجب ألا تستخدم برامج API Clients الميزة noreferrer
التي تحذف القيمة Referer
.
ضبط Referer
في البيئات التي تكون فيها قيمة HTTP Referer
فارغة تلقائيًا ولا يضبطها المتصفّح تلقائيًا، يجب أن تتّخذ "جهات ربط واجهة برمجة التطبيقات" إجراءً لتوفير هويتها من خلال وسائل بديلة. في عمليات الدمج مع WebView، مثل تطبيق الأجهزة الجوّالة أو تطبيق الكمبيوتر، يكون HTTP Referer
فارغًا تلقائيًا ويتم عادةً ضبط Referer
باستخدام إحدى الطرق التالية:
-
تطبيق على الأجهزة الجوّالة يتضمّن مشغّلاً داخل ملف HTML محلي
في عملية الضبط هذه، يتم تحميل المشغّل في ملف HTML مجمّع مع التطبيق. وعند تحميل ملف HTML هذا، سيؤدي ضبط المَعلمة
baseUrl
إلى ضبطReferer
.- Android
loadDataWithBaseURL
- iOS
loadHTMLString:baseURL:
- Android
-
تطبيق الأجهزة الجوّالة بدون ملف HTML محلي
في هذا الإعداد، يتم تحميل المشغّل مباشرةً من
https://www.youtube.com/embed/VIDEO_ID
بدون أي ملف HTML مضمّن. يمكنك ضبطReferer
من خلال إضافته كعنوان HTTP:- Android
loadUrl
مع إضافة عنوان HTTPReferer
إلى المَعلمةadditionalHttpHeaders
-
iOS
loadRequest:
مع إضافة عنوان HTTPReferer
إلى الطلب على سبيل المثال:NSString *bundleId = [[NSBundle mainBundle] bundleIdentifier]; NSString *referrer = [[NSString stringWithFormat:@"https://%@", bundleId] lowercaseString]; NSURL *referrerUrl = [NSURL URLWithString:referrer]; NSString *destination = @"https://www.youtube.com/embed/VIDEO_ID"; NSURL *destinationUrl = [NSURL URLWithString:destination]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:destinationUrl]; [request addValue:referrerUrl forHTTPHeaderField:@"Referer"]; // Create an instance of WKWebView (omitted for simplicity), then load the NSMutableURLRequest. [webView loadRequest:request];
- Android
-
تطبيق متوافق مع الأجهزة الجوّالة يتضمّن مشغّلاً داخل علامة تبويب متصفّح أصلية
-
Android
CustomTabs
استخدِم
Intent.EXTRA_REFERRER
لضبط المُحيل. احرص على استخدام المخططandroid-app://
بدلاً منhttps://
عند إنشاءUri
. على سبيل المثال:String destinationUrl = "https://www.youtube.com/embed/VIDEO_ID"; CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build() customTabsIntent.intent.putExtra(Intent.EXTRA_REFERRER, Uri.parse("android-app://" + context.getPackageName())); customTabsIntent.launchUrl(this, Uri.parse(destinationUrl));
-
iOS
SFSafariViewController
لا يتيح
SFSafariViewController
ضبطReferer
. في هذه الحالة، اضبط مَعلمة مشغّلorigin
بدلاً من ذلك.
-
-
تطبيق سطح المكتب
في هذا الإعداد، اضبط
Referer
عن طريق إضافته كعنوان HTTP:- Microsoft .NET: استخدِم
HttpRequestHeaders.Referrer
أوCoreWebView2HttpRequestHeaders.SetHeader
- macOS: اتّبِع التعليمات نفسها الموضّحة أعلاه لتطبيقات iOS للأجهزة الجوّالة
- Microsoft .NET: استخدِم
بالنسبة إلى المنصات الأخرى التي تكون فيها قيمة HTTP Referer
فارغة تلقائيًا، اضبط قيمة Referer
من خلال إعداد WebView الذي يتم تحميل المشغّل فيه. قد تختلف التقنية الدقيقة حسب المنصة.
إذا كنت مالك مكتبة أو إطار عمل أو إضافة أو خدمة أو برنامج تضمين يستخدمه المطوّرون لدمج مشغّل YouTube المضمّن، عليك استرداد معرّف التطبيق من البيئة (قد لا يكون ذلك ممكنًا، حسب النظام الأساسي) أو السماح للمطوّرين بإدخال معرّف التطبيق الخاص بهم حتى يمكن ضبط Referer
(ومَعلمة المشغّل widget_referrer
، إذا كان ذلك مناسبًا) كما هو موضّح أعلاه.
تنسيق المُحيل
عندما تقدّم Referer بشكلٍ صريح من خلال ضبط مَعلمة WebView أو إضافة عنوان HTTP، يكون التنسيق عادةً عنوان URL مؤهَّلاً بالكامل. حدِّد HTTPS
كبروتوكول. يجب أن يكون اسم النطاق ضمن عنوان URL هو معرّف تطبيقك ("معرّف التطبيق") المسجّل لدى المتجر الذي وزّع تطبيقك على المستخدمين النهائيين. إذا كان تطبيقك متاحًا للمستخدمين من خلال قناة توزيع بديلة، استخدِم معرّف التطبيق المسجَّل لدى نظام التشغيل أثناء تثبيت التطبيق. في معظم الحالات، سيكون معرّف تطبيقك اسم نطاق معكوسًا (يُعرف أيضًا باسم "تنسيق نظام أسماء النطاقات العكسي")، مثل com.google.android.youtube
. أمثلة تمثيلية:
- نظام التشغيل Android وتطبيقات Android على ChromeOS: معرّف التطبيق
- أنظمة Apple الأساسية، بما في ذلك iOS وiPadOS وmacOS: معرّف الحزمة
- Samsung Tizen: معرّف التطبيق
- توزيعات Linux:
- Fedora: معرّف التطبيق
- Gnome: معرّف التطبيق
- Ubuntu: معرّف التطبيق
في بعض المنصات، لا يكون رقم تعريف التطبيق اسم نطاق معكوسًا. في هذه الحالات، استخدِم معرّف التطبيق الفريد الذي يخصّصه المتجر الذي يوزّع التطبيق. عندما يكون معرّف التطبيق في المتجر عبارة عن سلسلة أبجدية رقمية تم إنشاؤها (يخصّصها المتجر أو أدوات التطوير، ولا يختارها مطوّر التطبيق)، أدرِج اسم التطبيق المعروض (مع استبدال المسافات بشرطات) ومعرّف التطبيق في المتجر، مع الفصل بينهما بنقطة. على سبيل المثال: <my-app-name>.<AppID>
. يجب أن تظل هذه القيمة ثابتة عند تغيير إصدار التطبيق. إذا لم يكن التطبيق مستضافًا على متجر، استخدِم معرّف التطبيق المسجَّل في نظام التشغيل أثناء تثبيت التطبيق، ويكون هذا المعرّف عادةً معرّفًا فريدًا في بيان التطبيق. استبعِد أي تفاصيل حول إصدار التطبيق والبنية المتوافقة. أمثلة تمثيلية:
-
سوق Chrome الإلكتروني: استضافة المتجر
عادةً ما يكون رقم تعريف التطبيق في المتجر هو الجزء الأخير من المسار في عنوان URL الخاص بالتطبيق
https://chromewebstore.google.com/detail/<hyphenated-app-name>/<AppID>
. استخدِم اسم التطبيق الذي يتضمّن شرطة ورقم تعريف التطبيق في المتجر لإنشاء السلسلة<my-app-name>.<AppID>
الموضّحة أعلاه. -
Windows: مستضاف في المتجر
عادةً ما يكون رقم تعريف التطبيق في المتجر هو الجزء الأخير من المسار في عنوان URL الخاص بالتطبيق
https://apps.microsoft.com/detail/<AppID>
. استخدِم رقم تعريف تطبيق المتجر لإنشاء السلسلة<my-app-name>.<AppID>
الموضّحة أعلاه. يجب تضمين اسم التطبيق الذي يتضمّن شرطة أيضًا. -
Windows: التوزيع خارج المتجر
تحتوي تطبيقات Windows على هوية حزمة في بيان التطبيق:
Name_Version_Architecture_ResourceID_PublisherID
. استخدِم السمةName
فقط. -
Xbox: مستضافة في المتجر
عادةً ما يكون رقم تعريف التطبيق في المتجر هو الجزء الأخير من المسار في عنوان URL الخاص بالتطبيق
https://www.xbox.com/<region>/games/store/<hyphenated-app-name>/<AppID>
. استخدِم اسم التطبيق الذي يتضمّن شرطة ورقم تعريف التطبيق في المتجر لإنشاء السلسلة<my-app-name>.<AppID>
الموضّحة أعلاه.
بالنسبة إلى برامج واجهة برمجة التطبيقات التي ترسل عددًا كبيرًا من الطلبات إلى YouTube (راجِع الاستخدام والحصص)، قد تكون هناك حاجة إلى بيانات اعتماد إضافية للوصول إلى مشغّل YouTube المضمَّن.
قد يؤدي عدم الالتزام بهذه المتطلبات إلى الحدّ من وظائف مشغّل YouTube المضمّن.
نوع WebView
عند دمج مشغّل YouTube المضمَّن في WebView، استخدِم أحد أنواع WebView التي يوفّرها نظام التشغيل عندما يكون ذلك متاحًا. على سبيل المثال:
- نظام التشغيل Android: الإصدار
WebView
أوCustomTabs
- أنظمة Apple الأساسية، بما في ذلك iOS وiPadOS وmacOS:
WKWebView
أوSFSafariViewController
حجم مشغّل YouTube المضمّن
يجب أن يكون حجم إطار العرض للمشغّلات المضمّنة 200 × 200 بكسل على الأقل. إذا كان المشغّل يعرض عناصر تحكّم، يجب أن يكون كبيرًا بما يكفي لعرض عناصر التحكّم بالكامل بدون تصغير مساحة العرض إلى أقل من الحد الأدنى للحجم. ننصح بأن يكون عرض مشغّلات الفيديو بنسبة عرض إلى ارتفاع 16:9 لا يقل عن 480 بكسل وارتفاعها لا يقل عن 270 بكسل.
التشغيل التلقائي وعمليات التشغيل المبرمَجة
يتناول هذا القسم عمليات التشغيل التلقائي. تنطبق هذه السياسة على مشغّلات YouTube المضمَّنة التي تستخدم مَعلمة المشغّل autoplay
أو تبدأ التشغيل التلقائي آليًا باستخدام خدمة YouTube IFrame Player API أو خدمة أخرى من YouTube API.
-
يجب أن تبدأ المشغّلات المضمّنة التي تشغّل الفيديو تلقائيًا في تشغيل الفيديو فور تحميل الصفحة أو بمجرد أن يصبح المشغّل المضمّن مرئيًا بالكامل. ومع ذلك، يجب ألا يبدأ عميل واجهة برمجة التطبيقات التشغيل التلقائي إلّا بعد ظهور المشغّل وظهور أكثر من نصفه على الصفحة أو الشاشة.
-
يجب ألا تحتوي الصفحة أو الشاشة على أكثر من مشغّل YouTube واحد يشغّل المحتوى تلقائيًا في الوقت نفسه.
-
يجب ألا يقلّ عرض أي صورة مصغّرة على YouTube تبدأ تشغيل الفيديو عن 120 بكسل وألا يقلّ ارتفاعها عن 70 بكسل.
سمات "مشغّل YouTube"
يتم تحديد سمات ومعلَمات مشغّل YouTube، بما في ذلك، على سبيل المثال، مظهر العلامة التجارية لـ YouTube في المشغّل، في مستندات ومواصفات YouTube API (https://developers.google.com/youtube). يجب عدم إجراء تغييرات على مشغّل YouTube غير موضّحة بشكل صريح في مستندات واجهة برمجة التطبيقات.
التراكبات والإطارات
يجب عدم عرض تراكبات أو إطارات أو عناصر مرئية أخرى أمام أي جزء من مشغّل YouTube المضمّن، بما في ذلك عناصر التحكم في المشغّل. وبالمثل، يجب عدم استخدام تراكبات أو إطارات أو عناصر مرئية أخرى لإخفاء أي جزء من المشغّل المضمّن، بما في ذلك عناصر التحكم في المشغّل.
عدد تمريرات الماوس
يجب عدم استخدام عمليات التمرير فوق العناصر أو أحداث اللمس على مشغّل YouTube لبدء أي إجراء نيابةً عن المستخدم، مثل فتح نافذة أو الاشتراك في قناة.
تحميل الفيديوهات
إذا كانت "برامج API" تتيح للمستخدمين تحميل المحتوى إلى منصات متعددة، يجب أن يتمكّن المستخدمون من اختيار المنصات التي يريدون تحميل فيديوهاتهم إليها وإلغاء اختيارها.
متطلبات البيانات
على عملاء واجهة برمجة التطبيقات الذين يتيحون للمستخدمين تحميل فيديوهات إلى YouTube أن يتيحوا للمستخدمين ضبط القيم في القائمة التالية. أي خصائص غير مُدرَجة هي خصائص اختيارية.
الاسم | الوصف | |
---|---|---|
سمات الموارد | ||
snippet.title |
مَعلمة مطلوبة. تمثّل هذه السمة عنوان الفيديو. يعرض YouTube خطأً إذا تجاوزت القيمة 100 حرف. يتيح YouTube استخدام جميع أحرف UTF-8 الصالحة باستثناء < و> .
| |
snippet.description |
مَعلمة مطلوبة. تمثّل هذه السمة وصف الفيديو. يعرض YouTube رسالة خطأ إذا تجاوزت القيمة 5,000 بايت. يتيح YouTube استخدام جميع أحرف UTF-8 الصالحة باستثناء < و> . |
|
status.privacyStatus |
مَعلمة مطلوبة. إعدادات خصوصية الفيديو يجب أن يتمكّن المستخدمون من اختيار ما إذا كان الفيديو الذي تم تحميله سيكون علنيًا أو خاصًا أو غير مُدرَج. | |
مَعلمات الطلب | ||
onBehalfOfContentOwnerChannel |
مطلوبة بشكل مشروط إذا كانت بيانات اعتماد التفويض الخاصة بالطلب تحدّد مالك محتوى وتم ضبط المَعلمة onBehalfOfContentOwner ، يجب أن يتمكّن مستخدم واجهة برمجة التطبيقات أيضًا من تحديد قناة YouTube التي يتم تحميل الفيديو إليها. |
عرض التعليقات
الاسم | الوصف | |
---|---|---|
سمات الموارد | ||
snippet.textDisplay |
مَعلمة مطلوبة. تمثّل هذه السمة نص التعليق. يجب أن يعرض برنامج واجهة برمجة التطبيقات (أ) النص الكامل لتعليق أو ردّ على تعليق، أو (ب) يقتطع النص ويوفّر طريقة تتيح للمشاهد الوصول بسهولة إلى النص الكامل من النسخة المقتطعة. ينطبق هذا الشرط على جميع التعليقات والردود على التعليقات، بغض النظر عن نوع المرجع المرتبط بالتعليقات (الفيديوهات والقنوات وما إلى ذلك). يُرجى العِلم أنّ قيمة السمة snippet.topLevelComment للمرجع commentThread هي مرجع comment ، وأنّ السمة replies.comments[] هي قائمة بمراجع comment . وبالتالي، ينطبق هذا الشرط أيضًا على السمتَين snippet.topLevelComment.snippet.textDisplay وreplies.comments[].snippet.textDisplay . |
|
snippet.title ( channel ) |
مطلوب (اقتراح) تمثّل هذه السمة عنوان القناة.
|
|
snippet.title ( video ) |
مطلوبة بشكل مشروط (اقتراح): تمثّل هذه السمة عنوان الفيديو. يجب عرض هذه القيمة إذا كان التعليق مرتبطًا بفيديو. | |
snippet.moderationStatus |
مطلوبة بشكل مشروط إذا كانت قيمة المَعلمة moderationStatus في طلب واجهة برمجة التطبيقات هي heldForReview أو likelySpam ، يجب أن يحدّد العرض هذا الحالة بوضوح باستخدام قيمة السمة أو عبارة مشابهة (مثل "هذا التعليق قيد المراجعة") أو عنوان (مثل "قيد المراجعة") أو عبارة أخرى لا لبس فيها. تتيح طريقة commentThreads.list استرداد التعليقات استنادًا إلى حالة الإشراف عليها. |
إضافة تعليقات
الاسم | الوصف | |
---|---|---|
سمات الموارد | ||
snippet.title ( channel ) |
مَعلمة مطلوبة. تمثّل هذه السمة عنوان القناة.
|
|
snippet.title ( video ) |
مَعلمة مطلوبة. إذا كان المستخدم يضيف تعليقًا حول فيديو، يجب أن يعرض برنامج واجهة برمجة التطبيقات عنوان الفيديو. | |
متطلبات أخرى | ||
Comment author's channel name |
مَعلمة مطلوبة. يجب أن يحدّد عميل واجهة برمجة التطبيقات بوضوح حساب مستخدم YouTube الذي سيتم إسناد التعليق إليه. إذا كانت بيانات اعتماد التفويض الخاصة بالطلب تحدّد مالك محتوى وتم ضبط المَعلمة onBehalfOfContentOwner ، يجب أن يتمكّن مستخدم واجهة برمجة التطبيقات أيضًا من تحديد قناة YouTube التي سيتم إسناد التعليق إليها. |
إضافة ردود على التعليقات
الاسم | الوصف | |
---|---|---|
سمات الموارد | ||
snippet.textDisplay |
مَعلمة مطلوبة. تمثّل هذه السمة نص التعليق. يجب أن يعرض عميل واجهة برمجة التطبيقات نص التعليق الذي يردّ عليه المستخدم وفقًا للقواعد المحدّدة في قسم عرض التعليقات من هذا المستند. | |
snippet.title ( channel ) |
مَعلمة مطلوبة. تمثّل هذه السمة عنوان القناة.
|
|
snippet.title ( video ) |
مَعلمة مطلوبة. إذا كان المستخدم يردّ على تعليق حول فيديو، يجب أن يعرض برنامج واجهة برمجة التطبيقات عنوان الفيديو. | |
متطلبات أخرى | ||
Comment author's channel name |
مَعلمة مطلوبة. يجب أن يحدّد عميل واجهة برمجة التطبيقات بوضوح حساب مستخدم YouTube الذي سيتم إسناد الردّ على التعليق إليه. إذا كانت بيانات اعتماد التفويض الخاصة بالطلب تحدّد مالك محتوى وتم ضبط المَعلمة onBehalfOfContentOwner ، يجب أن يتمكّن مستخدم واجهة برمجة التطبيقات أيضًا من تحديد قناة YouTube التي سيتم إسناد الردّ على التعليق إليها. |
تعديل الردود على التعليقات أو حذفها
الاسم | الوصف | |
---|---|---|
سمات الموارد | ||
snippet.textDisplay |
مَعلمة مطلوبة. تمثّل هذه السمة نص التعليق. يجب أن يعرض عميل واجهة برمجة التطبيقات نص التعليق الذي يعدّله المستخدم أو يحذفه وفقًا للقواعد المحدّدة في قسم عرض التعليقات من هذا المستند. | |
snippet.title ( channel ) |
مَعلمة مطلوبة. تمثّل هذه السمة عنوان القناة.
|
|
snippet.title ( video ) |
مَعلمة مطلوبة. إذا كان المستخدم يعدّل أو يحذف تعليقًا حول فيديو، يجب أن يعرض برنامج واجهة برمجة التطبيقات عنوان الفيديو. | |
متطلبات أخرى | ||
Comment author's channel name |
مَعلمة مطلوبة. يجب أن يحدّد عميل واجهة برمجة التطبيقات بوضوح حساب مستخدم YouTube الذي يُنسب إليه التعليق. |
حظر مستخدم من المحادثة المباشرة (أو إزالة الحظر)
الاسم | الوصف | |
---|---|---|
سمات الموارد | ||
snippet.title ( channel ) |
مَعلمة مطلوبة. اسم قناة YouTube التي سيتم حظرها أو إلغاء حظرها بالإضافة إلى ذلك، يجب أن يؤدي الاسم إلى القناة أو يجب عرض عنوان URL الخاص بالقناة أيضًا. | |
متطلبات أخرى | ||
اسم قناة مؤلف التعليق | مَعلمة مطلوبة. يجب أن يحدّد برنامج API بوضوح حساب مستخدم YouTube المستخدَم لإضافة الحظر أو إزالته. |