أمثلة على رموز JavaScript

يستخدم نموذج الرمز البرمجي أدناه Google APIs Client Library للغة JavaScript. يمكنك تنزيل هذا النموذج من المجلد javascript في مستودع عيّنات الرموز البرمجية لواجهات YouTube API على GitHub.

يطلب الرمز إذن المستخدم بالوصول إلى النطاق https://www.googleapis.com/auth/yt-analytics.readonly.

return gapi.auth2.getAuthInstance()
    .signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"})
    ...

قد يحتاج تطبيقك أيضًا إلى طلب الوصول إلى نطاقات أخرى. على سبيل المثال، قد يحتاج تطبيق يستدعي واجهة YouTube Analytics API وواجهة YouTube Data API إلى أن يمنح المستخدمون أيضًا إذن الوصول إلى حساباتهم على YouTube. تحدّد نظرة عامة حول التفويض النطاقات المستخدَمة عادةً في التطبيقات التي تستدعي YouTube Analytics API.

استرداد إحصاءات القناة اليومية

يطلب هذا المثال من YouTube Analytics API استرداد المشاهدات اليومية والمقاييس الأخرى لقناة المستخدم الذي يمنح الإذن لسنة التقويم 2017. يستخدم النموذج مكتبة برامج JavaScript لواجهات Google APIs.

إعداد بيانات اعتماد المصادقة

قبل تشغيل هذا النموذج محليًا للمرة الأولى، عليك إعداد بيانات اعتماد التفويض لمشروعك باتّباع الخطوات التالية:

  1. أنشِئ مشروعًا أو اختَر مشروعًا في وحدة تحكّم Google API.
  2. فعِّل YouTube Analytics API لمشروعك.
  3. في أعلى صفحة بيانات الاعتماد، اختَر علامة التبويب شاشة طلب الموافقة على OAuth. اختَر عنوان بريد إلكتروني، وأدخِل اسم منتج إذا لم يتم ضبطه من قبل، ثم انقر على زر "حفظ".
  4. في صفحة بيانات الاعتماد، انقر على الزر إنشاء بيانات اعتماد واختَر معرّف عميل OAuth.
  5. اختَر نوع التطبيق "تطبيق الويب".
  6. في حقل "مصادر JavaScript المسموح بها"، أدخِل عنوان URL الذي ستعرض منه نموذج الرمز. على سبيل المثال، يمكنك استخدام شيء مثل http://localhost:8000 أو http://yourserver.example.com. يمكنك ترك حقل "معرّفات الموارد المنتظمة (URI) المعتمَدة لإعادة التوجيه" فارغًا.
  7. انقر على الزر إنشاء للانتهاء من إنشاء بيانات الاعتماد.
  8. قبل إغلاق مربّع الحوار، انسخ معرّف العميل الذي ستحتاج إلى وضعه في نموذج الرمز البرمجي.

إنشاء نسخة محلية من العيّنة

بعد ذلك، احفظ العيّنة في ملف محلي. في النموذج، ابحث عن السطر التالي واستبدِل YOUR_CLIENT_ID بمعرّف العميل الذي حصلت عليه عند إعداد بيانات اعتماد التفويض.

gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'});

تشغيل الرمز

أنت الآن مستعد لاختبار العيّنة فعليًا:

  1. افتح الملف المحلي من متصفّح ويب، ثم افتح وحدة تصحيح الأخطاء في المتصفّح. من المفترض أن تظهر لك صفحة تعرض زرَّين.
  2. انقر على الزر تفويض وتحميل لبدء عملية تفويض المستخدم. إذا منحت التطبيق الإذن باسترداد بيانات قناتك، من المفترض أن تظهر الأسطر التالية في وحدة التحكّم في المتصفّح:
    Sign-in successful
    GAPI client loaded for API
  3. إذا ظهرت لك رسالة خطأ بدلاً من الأسطر أعلاه، تأكَّد من أنّك تحمّل النص البرمجي من عنوان URI المصرّح به لإعادة التوجيه الذي أعددته لمشروعك، ومن أنّك وضعت معرّف العميل في الرمز كما هو موضّح أعلاه.
  4. انقر على الزر تنفيذ لاستدعاء واجهة برمجة التطبيقات. من المفترض أن يظهر لك كائن response مطبوع في وحدة التحكّم في المتصفّح. في هذا العنصر، يتم ربط السمة result بعنصر يحتوي على بيانات واجهة برمجة التطبيقات.

نموذج التعليمات البرمجية

<script src="https://apis.google.com/js/api.js"></script>
<script>
  function authenticate() {
    return gapi.auth2.getAuthInstance()
        .signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"})
        .then(function() { console.log("Sign-in successful"); },
              function(err) { console.error("Error signing in", err); });
  }
  function loadClient() {
    return gapi.client.load("https://youtubeanalytics.googleapis.com/$discovery/rest?version=v2")
        .then(function() { console.log("GAPI client loaded for API"); },
              function(err) { console.error("Error loading GAPI client for API", err); });
  }
  // Make sure the client is loaded and sign-in is complete before calling this method.
  function execute() {
    return gapi.client.youtubeAnalytics.reports.query({
      "ids": "channel==MINE",
      "startDate": "2017-01-01",
      "endDate": "2017-12-31",
      "metrics": "views,estimatedMinutesWatched,averageViewDuration,averageViewPercentage,subscribersGained",
      "dimensions": "day",
      "sort": "day"
    })
        .then(function(response) {
                // Handle the results here (response.result has the parsed body).
                console.log("Response", response);
              },
              function(err) { console.error("Execute error", err); });
  }
  gapi.load("client:auth2", function() {
    gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'});
  });
</script>
<button onclick="authenticate().then(loadClient)">authorize and load</button>
<button onclick="execute()">execute</button>