Краткое руководство по Node.js

В руководствах по быстрому запуску объясняется, как настроить и запустить приложение, которое обращается к API Google Workspace. В этом руководстве используется упрощенный подход к аутентификации, подходящий для тестовой среды. Для производственной среды мы рекомендуем изучить вопросы аутентификации и авторизации, прежде чем выбирать учетные данные доступа , подходящие для вашего приложения.

Создайте приложение командной строки Node.js, которое будет отправлять запросы к API меток для автомобилей.

Цели

  • Настройте свою среду.
  • Установите клиентскую библиотеку.
  • Подготовьте образец.
  • Запустите образец.

Предварительные требования

  • Аккаунт Google.

Настройте свою среду

Для завершения этого краткого руководства настройте свою среду.

Включить API

Перед использованием API Google необходимо включить их в проекте Google Cloud. В одном проекте Google Cloud можно включить один или несколько API.
  • В консоли Google Cloud включите API меток Google Диска.

    Включить API

Авторизация учетных данных для настольного приложения

Для аутентификации конечных пользователей и доступа к пользовательским данным в вашем приложении необходимо создать один или несколько идентификаторов клиента OAuth 2.0. Идентификатор клиента используется для идентификации отдельного приложения на серверах OAuth Google. Если ваше приложение работает на нескольких платформах, необходимо создать отдельный идентификатор клиента для каждой платформы.
  1. В консоли Google API перейдите в > Платформа аутентификации Google > Клиенты .

    Перейти к клиентам

  2. Нажмите «Создать клиента» .
  3. Выберите «Тип приложения» > «Настольное приложение» .
  4. В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google API.
  5. Нажмите «Создать» .

    Вновь созданные учетные данные отображаются в разделе "Идентификаторы клиентов OAuth 2.0".

  6. Сохраните загруженный JSON-файл как credentials.json и переместите его в свою рабочую директорию.

Установите клиентскую библиотеку.

  • Установите библиотеки с помощью npm:

    npm install googleapis@113 @google-cloud/local-auth@2.1.1 --save
    

Настройте образец

  1. В рабочей директории создайте файл с именем index.js .

  2. Вставьте в файл следующий код:

        const fs = require('fs');
        const readline = require('readline');
        const {google} = require('googleapis');
    
        // If modifying these scopes, delete token.json.
        const SCOPES = ['https://www.googleapis.com/auth/drive.labels.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 = 'token.json';
    
        // Load client secrets from a local file.
        fs.readFile('credentials.json', (err, content) => {
          if (err) return console.log('Error loading client secret file:', err);
          // Authorize a client with credentials, then call the Google Drive Labels
          // API.
          authorize(JSON.parse(content), listDriveLabels);
        });
    
        /**
        * Create an OAuth2 client with the given credentials, and then execute the
        * given callback function.
        * @param {Object} credentials The authorization client credentials.
        * @param {function} callback The callback to call with the authorized client.
        */
        function authorize(credentials, callback) {
          const {client_secret, client_id, redirect_uris} = credentials.installed;
          const oAuth2Client = new google.auth.OAuth2(
              client_id, client_secret, redirect_uris[0]);
    
          // Check if we have previously stored a token.
          fs.readFile(TOKEN_PATH, (err, token) => {
            if (err) return getNewToken(oAuth2Client, callback);
            oAuth2Client.setCredentials(JSON.parse(token));
            callback(oAuth2Client);
          });
        }
    
        /**
        * Get and store new token after prompting for user authorization, and then
        * execute the given callback with the authorized OAuth2 client.
        * @param {google.auth.OAuth2} oAuth2Client The OAuth2 client to get token for.
        * @param {getEventsCallback} callback The callback for the authorized client.
        */
        function getNewToken(oAuth2Client, callback) {
          const authUrl = oAuth2Client.generateAuthUrl({
            access_type: 'offline',
            scope: SCOPES,
          });
          console.log('Authorize this app by visiting this url:', authUrl);
          const rl = readline.createInterface({
            input: process.stdin,
            output: process.stdout,
          });
          rl.question('Enter the code from that page here: ', (code) => {
            rl.close();
            oAuth2Client.getToken(code, (err, token) => {
              if (err) return console.error('Error retrieving access token', err);
              oAuth2Client.setCredentials(token);
              // Store the token to disk for later program executions
              fs.writeFile(TOKEN_PATH, JSON.stringify(token), (err) => {
                if (err) return console.error(err);
                console.log('Token stored to', TOKEN_PATH);
              });
              callback(oAuth2Client);
            });
          });
        }
    
        function listDriveLabels(auth) {
          const service = google.drivelabels({version: 'v2', auth});
          const params = {
            'view': 'LABEL_VIEW_FULL'
          };
          service.labels.list(params, (err, res) => {
            if (err) return console.error('The API returned an error: ' + err);
            const labels = res.data.labels;
            if (labels) {
              labels.forEach((label) => {
                const name = label.name;
                const title = label.properties.title;
                console.log(`${name}\t${title}`);
              });
            } else {
              console.log('No Labels');
            }
          });
        }
    

Запустите образец

  1. В рабочей директории запустите пример:

    node .
    
  2. При первом запуске примера вам будет предложено авторизовать доступ:

    1. Если вы еще не вошли в свою учетную запись Google, вам будет предложено войти. Если вы вошли в несколько учетных записей, выберите одну учетную запись для авторизации.
    2. Нажмите «Принять» .

    Информация об авторизации хранится в файловой системе, поэтому при следующем запуске примера кода запрос на авторизацию не потребуется.

Вы успешно создали свое первое приложение Nodejs, которое отправляет запросы к API Drive Labels.

Следующие шаги