Krótkie wprowadzenie do Node.js

Krótkie wprowadzenie wyjaśnia, jak skonfigurować i uruchomić aplikację, która wywołuje Interfejs Google Workspace API.

Krótkie wprowadzenie do Google Workspace wykorzystuje biblioteki klienta API do obsługi niektórych szczegóły procesu uwierzytelniania i autoryzacji. Zalecamy używasz bibliotek klienta we własnych aplikacjach. W tym krótkim wprowadzeniu użyto uproszczone metody uwierzytelniania odpowiednie do testowania dla środowiska. W środowisku produkcyjnym zalecamy zapoznanie się z uwierzytelnianie i autoryzacja przed wybór danych logowania odpowiednie dla Twojej aplikacji.

utworzyć aplikację wiersza poleceń Node.js, która wysyła żądania do Interfejs API Gmaila.

Cele

  • skonfigurować środowisko,
  • Zainstaluj bibliotekę klienta.
  • Skonfiguruj sampel.
  • Uruchom przykład.

Wymagania wstępne

Aby uruchomić to krótkie wprowadzenie, musisz spełnić te wymagania wstępne:

  • konto Google z włączonym Gmailem.

Konfigurowanie środowiska

Aby ukończyć to krótkie wprowadzenie, skonfiguruj środowisko.

Włącz API

Zanim zaczniesz korzystać z interfejsów API Google, musisz je włączyć w projekcie Google Cloud. W jednym projekcie Google Cloud możesz włączyć 1 lub więcej interfejsów API.

Jeśli korzystasz z nowego projektu Google Cloud, skonfiguruj ekranu zgody OAuth i dodaj siebie jako użytkownika testowego. Jeśli masz już konto Google ten krok został wykonany w Twoim projekcie Cloud, przejdź do następnej sekcji.

  1. W konsoli Google Cloud otwórz menu . > Interfejsy API i Usługi > Ekran zgody OAuth.

    Otwórz ekran zgody OAuth

  2. Jako Typ użytkownika wybierz Wewnętrzny i kliknij Utwórz.
  3. Wypełnij formularz rejestracji aplikacji, a potem kliknij Zapisz i kontynuuj.
  4. Na razie możesz pominąć dodawanie zakresów i kliknąć Zapisz i kontynuuj. w przyszłości, gdy utworzysz aplikację do użytku poza swoim Google Workspace, musisz zmienić Typ użytkownika na Zewnętrzny, a następnie: dodaj zakresy autoryzacji wymagane przez aplikację.

  5. Przejrzyj podsumowanie rejestracji aplikacji. Aby wprowadzić zmiany, kliknij Edytuj. Jeśli aplikacja z rejestracji wszystko jest w porządku, kliknij Back to Dashboard (Powrót do panelu).

Autoryzacja danych logowania w aplikacji komputerowej

Aby uwierzytelniać użytkowników i uzyskiwać dostęp do ich danych w aplikacji, musisz: utwórz co najmniej jeden identyfikator klienta OAuth 2.0. Identyfikator klienta służy do identyfikowania z jedną aplikacją na serwery OAuth Google. Jeśli Twoja aplikacja działa na wielu platformach, musisz utworzyć oddzielny identyfikator klienta dla każdej platformy.
  1. W konsoli Google Cloud otwórz Menu > Interfejsy API i Usługi > Dane logowania.

    Przejdź do danych logowania

  2. Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
  3. Kliknij Typ aplikacji > Aplikacja komputerowa.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. Kliknij Utwórz. Pojawi się ekran tworzenia klienta OAuth z nowym identyfikatorem klienta i tajnym kluczem klienta.
  6. Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji Identyfikatory klienta OAuth 2.0.
  7. Zapisz pobrany plik JSON jako credentials.json i przenieś plik do katalogu roboczego.

Instalowanie biblioteki klienta

  • Zainstaluj biblioteki przy użyciu npm:

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

Konfigurowanie próbki

  1. W katalogu roboczym utwórz plik o nazwie index.js.

  2. W pliku wklej ten kod:

    gmail/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/gmail.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 labels in the user's account.
     *
     * @param {google.auth.OAuth2} auth An authorized OAuth2 client.
     */
    async function listLabels(auth) {
      const gmail = google.gmail({version: 'v1', auth});
      const res = await gmail.users.labels.list({
        userId: 'me',
      });
      const labels = res.data.labels;
      if (!labels || labels.length === 0) {
        console.log('No labels found.');
        return;
      }
      console.log('Labels:');
      labels.forEach((label) => {
        console.log(`- ${label.name}`);
      });
    }
    
    authorize().then(listLabels).catch(console.error);
    

Uruchamianie przykładu

  1. W katalogu roboczym uruchom przykładowy kod:

    node .
    
  1. Przy pierwszym uruchomieniu przykładu pojawi się prośba o autoryzację dostępu:
    1. Jeśli wyświetli się prośba o zalogowanie się na konto Google, zaloguj się. Jeśli używasz wielu kont, wybierz jedno konto do autoryzacji.
    2. Kliknij Accept (Zaakceptuj).

    Aplikacja Nodejs uruchamia i wywołuje interfejs Gmail API.

    Informacje o autoryzacji są przechowywane w systemie plików, więc przy następnym uruchomieniu próbki nie zostanie wyświetlony monit o autoryzację.

Dalsze kroki