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

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

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

أنشِئ تطبيق سطر أوامر Node.js ينشئ طلبات إلى Google Drive API.

الأهداف

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

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

لتشغيل هذا البدء السريع، تحتاج إلى المتطلبات الأساسية التالية:

  • حساب Google مع تفعيل Google Drive.

إعداد البيئة

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

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

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

إذا كنت تستخدم مشروعًا جديدًا على Google Cloud لإكمال هذه البداية السريعة، عليك ضبط شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth وإضافة نفسك كمستخدم تجريبي. إذا سبق وأكملت هذه الخطوة لمشروعك على السحابة الإلكترونية، انتقِل إلى القسم التالي.

  1. في Google Cloud Console، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > شاشة موافقة OAuth.

    الانتقال إلى شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth

  2. بالنسبة إلى نوع المستخدم، اختَر داخلي، ثم انقر على إنشاء.
  3. أكمِل نموذج تسجيل التطبيق، ثم انقر على حفظ ومتابعة.
  4. في الوقت الحالي، يمكنك تخطّي إضافة النطاقات والنقر على حفظ ومتابعة. عند إنشاء تطبيق في المستقبل للاستخدام خارج مؤسستك على Google Workspace، عليك تغيير نوع المستخدم إلى خارجي، وبعد ذلك إضافة نطاقات الأذونات التي يتطلبها تطبيقك.

  5. مراجعة ملخّص تسجيل التطبيق لإجراء تغييرات، انقر على تعديل. إذا بدا تسجيل التطبيق على ما يرام، انقر على الرجوع إلى لوحة البيانات.

مصادقة بيانات الاعتماد لتطبيق سطح المكتب

لمصادقة المستخدمين والوصول إلى بيانات المستخدمين في تطبيقك، يجب إنشاء معرّف عميل 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@105 @google-cloud/local-auth@2.1.0 --save
    

إعداد العيّنة

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

  2. في الملف، الصق التعليمة البرمجية التالية:

    drive/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/drive.metadata.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 compatible 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 names and IDs of up to 10 files.
     * @param {OAuth2Client} authClient An authorized OAuth2 client.
     */
    async function listFiles(authClient) {
      const drive = google.drive({version: 'v3', auth: authClient});
      const res = await drive.files.list({
        pageSize: 10,
        fields: 'nextPageToken, files(id, name)',
      });
      const files = res.data.files;
      if (files.length === 0) {
        console.log('No files found.');
        return;
      }
    
      console.log('Files:');
      files.map((file) => {
        console.log(`${file.name} (${file.id})`);
      });
    }
    
    authorize().then(listFiles).catch(console.error);

تنفيذ النموذج

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

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

    عند تشغيل تطبيق Nodejs، يجب الاتصال بواجهة برمجة تطبيقات Google Drive.

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

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