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

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

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

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

الأهداف

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

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

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

إعداد البيئة

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

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

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

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

  1. في وحدة التحكّم في Google Cloud، انتقِل إلى القائمة . > واجهات برمجة التطبيقات الخدمات > شاشة موافقة 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، وانقل إلى دليل العمل.

ضبط تطبيق Google Chat

لاستدعاء Google Chat API، يجب ضبط تطبيق Google Chat بالنسبة إلى أي طلبات كتابة، يمكن لتطبيق Google Chat تطبيق Google Chat في واجهة المستخدم باستخدام المعلومات التالية.

  1. في Google Cloud Console، انتقِل إلى صفحة ضبط واجهة Chat API:

    الانتقال إلى صفحة إعدادات Chat API

  2. ضمن معلومات التطبيق، أدخِل المعلومات التالية:

    1. في الحقل اسم التطبيق، أدخِل Chat API quickstart app.
    2. في حقل عنوان URL للصورة الرمزية، أدخل https://developers.google.com/chat/images/quickstart-app-avatar.png
    3. في حقل الوصف، أدخِل Quickstart for calling the Chat API.
  3. ضمن الميزات التفاعلية، انقر على تفعيل الميزات التفاعلية. لإيقاف الميزات التفاعلية تطبيق Chat

  4. انقر على حفظ.

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

  • تثبيت المكتبات باستخدام npm:

    npm install @google-apps/chat @google-cloud/local-auth@2.1.0 --save
    

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

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

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

    chat/quickstart/index.js
    const fs = require('fs').promises;
    const path = require('path');
    const process = require('process');
    const {authenticate} = require('@google-cloud/local-auth');
    const {ChatServiceClient} = require('@google-apps/chat');
    const {auth} = require('google-auth-library');
    
    // If modifying these scopes, delete token.json.
    const SCOPES = ['https://www.googleapis.com/auth/chat.spaces.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 auth.fromJSON(credentials);
      } catch (err) {
        console.log(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.
     *
     * @return {Promise<OAuth2Client>}
     */
    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 spaces with user credential.
     * @param {OAuth2Client} authClient An authorized OAuth2 client.
     */
    async function listSpaces(authClient) {
      // Create a client
      const chatClient = new ChatServiceClient({
        authClient: authClient,
        scopes: SCOPES,
      });
    
      // Initialize request argument(s)
      const request = {
        // Filter spaces by space type (SPACE or GROUP_CHAT or DIRECT_MESSAGE)
        filter: 'space_type = "SPACE"'
      };
    
      // Make the request
      const pageResult = chatClient.listSpacesAsync(request);
    
      // Handle the response. Iterating over pageResult will yield results and
      // resolve additional pages automatically.
      for await (const response of pageResult) {
        console.log(response);
      }
    }
    
    authorize().then(listSpaces).catch(console.error);
    

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

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

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

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

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

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