التشغيل السريع Node.js

توضّح الخطوات السريعة كيفية إعداد وتشغيل تطبيق يستدعي واجهة برمجة تطبيقات من Google Workspace.

تستخدم عمليات البدء السريع في Google Workspace مكتبات البرامج لواجهة برمجة التطبيقات للتعامل مع بعض تفاصيل عملية المصادقة والتفويض. وننصحك باستخدام مكتبات العميل لتطبيقاتك الخاصة. يستخدم نظام البدء السريع منهجًا مبسّطًا للمصادقة ومناسبًا لبيئة الاختبار. بالنسبة إلى بيئة الإنتاج، ننصحك للتعرّف على المصادقة والتفويض قبل اختيار بيانات اعتماد الوصول المناسبة لتطبيقك.

يمكنك إنشاء تطبيق سطر أوامر Node.js يقدم طلبات في Google Classroom API.

الأهداف

  • إعداد البيئة المحيطة بك.
  • ثبِّت مكتبة البرامج.
  • إعداد عيّنة من الكتاب
  • شغِّل النموذج.

المتطلبات الأساسية

لتنفيذ دليل البدء السريع هذا، يجب استيفاء المتطلبات الأساسية التالية:

  • حساب على Google for Education تم فيه تفعيل Google Classroom.

إعداد البيئة

لإكمال عملية البدء السريع هذه، يمكنك إعداد بيئتك.

تفعيل واجهة برمجة التطبيقات

قبل استخدام Google APIs، عليك تفعيلها في مشروع على Google Cloud. يمكنك تفعيل واجهة برمجة تطبيقات واحدة أو أكثر في مشروع واحد على Google Cloud.

تفويض بيانات الاعتماد لتطبيق متوافق مع أجهزة سطح المكتب

للمصادقة كمستخدم كمستخدم والوصول إلى بيانات المستخدم في تطبيقك، عليك إنشاء معرِّف عميل OAuth 2.0 أو أكثر. يتم استخدام معرِّف العميل لتحديد تطبيق واحد لخوادم OAuth من Google. إذا كان تطبيقك يعمل على أنظمة أساسية متعددة، يجب إنشاء معرِّف عميل منفصل لكل نظام أساسي.
  1. في وحدة تحكّم Google Cloud، انتقِل إلى رمز القائمة > واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.

    الانتقال إلى "بيانات الاعتماد"

  2. انقر على إنشاء بيانات اعتماد > معرِّف عميل OAuth.
  3. انقر على نوع التطبيق > تطبيق متوافق مع الكمبيوتر المكتبي.
  4. في حقل الاسم، اكتب اسمًا لبيانات الاعتماد. لا يظهر هذا الاسم إلا في وحدة تحكم Google Cloud.
  5. انقر على إنشاء. ستظهر شاشة OAuth التي أنشأها العميل، والتي تعرض معرِّف العميل والرمز الجديد للعميل.
  6. انقر على حسنًا. تظهر بيانات الاعتماد التي تم إنشاؤها حديثًا ضمن معرِّفات عميل OAuth 2.0.
  7. احفظ ملف JSON الذي تم تنزيله بتنسيق credentials.json، وانقله إلى دليل العمل.

تثبيت مكتبة البرامج

  • ثبِّت المكتبات باستخدام برنامج npm:

    npm install googleapis@95 @google-cloud/local-auth@2.1.0 --save
    

إعداد النموذج

  1. في دليل العمل، أنشِئ ملفًا باسم index.js.

  2. الصِق الرمز التالي في الملف:

    Classroom/quickstart/index.js
    const fs = require('fs').promises;
    const path = require('path');
    const process = require('process');
    const {authenticate} = require('@google-cloud/local-auth');
    const {google} = require('googleapis');
    
    // If modifying these scopes, delete token.json.
    const SCOPES = ['https://www.googleapis.com/auth/classroom.courses.readonly'];
    // The file token.json stores the user's access and refresh tokens, and is
    // created automatically when the authorization flow completes for the first
    // time.
    const TOKEN_PATH = path.join(process.cwd(), 'token.json');
    const CREDENTIALS_PATH = path.join(process.cwd(), 'credentials.json');
    
    /**
     * Reads previously authorized credentials from the save file.
     *
     * @return {Promise<OAuth2Client|null>}
     */
    async function loadSavedCredentialsIfExist() {
      try {
        const content = await fs.readFile(TOKEN_PATH);
        const credentials = JSON.parse(content);
        return google.auth.fromJSON(credentials);
      } catch (err) {
        return null;
      }
    }
    
    /**
     * Serializes credentials to a file comptible with GoogleAUth.fromJSON.
     *
     * @param {OAuth2Client} client
     * @return {Promise<void>}
     */
    async function saveCredentials(client) {
      const content = await fs.readFile(CREDENTIALS_PATH);
      const keys = JSON.parse(content);
      const key = keys.installed || keys.web;
      const payload = JSON.stringify({
        type: 'authorized_user',
        client_id: key.client_id,
        client_secret: key.client_secret,
        refresh_token: client.credentials.refresh_token,
      });
      await fs.writeFile(TOKEN_PATH, payload);
    }
    
    /**
     * Load or request or authorization to call APIs.
     *
     */
    async function authorize() {
      let client = await loadSavedCredentialsIfExist();
      if (client) {
        return client;
      }
      client = await authenticate({
        scopes: SCOPES,
        keyfilePath: CREDENTIALS_PATH,
      });
      if (client.credentials) {
        await saveCredentials(client);
      }
      return client;
    }
    
    /**
     * Lists the first 10 courses the user has access to.
     *
     * @param {google.auth.OAuth2} auth An authorized OAuth2 client.
     */
    async function listCourses(auth) {
      const classroom = google.classroom({version: 'v1', auth});
      const res = await classroom.courses.list({
        pageSize: 10,
      });
      const courses = res.data.courses;
      if (!courses || courses.length === 0) {
        console.log('No courses found.');
        return;
      }
      console.log('Courses:');
      courses.forEach((course) => {
        console.log(`${course.name} (${course.id})`);
      });
    }
    
    authorize().then(listCourses).catch(console.error);

تنفيذ عيّنة

  1. في دليل العمل، شغِّل النموذج:

    node .
    
  2. عند تنفيذ النموذج لأول مرة، يطلب منك إذن الوصول:

    1. إذا لم تكن قد سجَّلت الدخول إلى حسابك على Google، سيُطلب منك تسجيل الدخول. إذا كنت مسجّلاً الدخول إلى حسابات متعددة، اختَر حسابًا واحدًا لاستخدامه للتفويض.
    2. انقر على قبول.

    ويتم تخزين معلومات التفويض في نظام الملفات، لذلك في المرة التالية التي تشغّل فيها الرمز النموذجي، لن يُطلب منك منح تفويض.

لقد أنشأت بنجاح تطبيق Nodejs الأول الذي يقدم الطلبات إلى Google Classroom API.

الخطوات التالية