Krótkie wprowadzenie do Node.js

Przewodniki szybkiego startu wyjaśniają, jak skonfigurować i uruchamiać aplikację, która wywołuje interfejs Google Workspace API.

Szybkie porady dotyczące Google Workspace korzystają z bibliotek klienta interfejsu API do obsługi niektórych szczegółów procesu uwierzytelniania i autoryzacji. Zalecamy używanie bibliotek klienta w przypadku własnych aplikacji. W tym krótkim wprowadzeniu użyjemy uproszczonego podejścia do uwierzytelniania, które jest odpowiednie dla środowiska testowego. W przypadku środowiska produkcyjnego zalecamy zapoznanie się z informacjami na temat uwierzytelniania i autoryzacji, zanim wybierzesz odpowiednie dla swojej aplikacji poświadczenia dostępu.

Utwórz aplikację wiersza poleceń Node.js, która wysyła żądania do interfejsu Google Drive Activity API.

Cele

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

Wymagania wstępne

Aby wykonać ten samouczek, musisz spełnić te wymagania wstępne:

  • konto Google;

Konfigurowanie środowiska

Aby rozpocząć 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 do wykonania zadań z tego krótkiego wprowadzenia posłużył Ci nowy, specjalnie utworzony projekt Google Cloud, skonfiguruj ekran akceptacji OAuth. Jeśli ten krok został już wykonany w przypadku Twojego projektu Cloud, przejdź do następnej sekcji.

  1. W konsoli Google Cloud otwórz Menu  > > Identyfikacja marki.

    Przejdź do sekcji Promowanie marki

  2. Jeśli masz już skonfigurowany projekt , możesz skonfigurować te ustawienia ekranu zgody OAuth: Markowanie, OdbiorcyDostęp do danych. Jeśli zobaczysz komunikat nie skonfigurowano, kliknij Rozpocznij:
    1. W sekcji Informacje o aplikacji w polu Nazwa aplikacji wpisz nazwę aplikacji.
    2. W sekcji Adres e-mail zespołu pomocy wybierz adres e-mail zespołu pomocy, na który użytkownicy będą mogli się z Tobą kontaktować w sprawie pytań dotyczących zgody.
    3. Kliknij Dalej.
    4. W sekcji Odbiorcy wybierz Wewnętrzny.
    5. Kliknij Dalej.
    6. W sekcji Dane kontaktowe wpisz adres e-mail, na który będą wysyłane powiadomienia o zmianach w projekcie.
    7. Kliknij Dalej.
    8. W sekcji Zakończ zapoznaj się z zasadami dotyczącymi danych użytkownika w usługach interfejsu API Google, a potem, jeśli się z nimi zgadzasz, kliknij Akceptuję zasady dotyczące danych użytkownika w usługach interfejsu API Google.
    9. Kliknij Dalej.
    10. Kliknij Utwórz.
  3. Na razie możesz pominąć dodawanie zakresów. Gdy w przyszłości będziesz tworzyć aplikację do użytku poza organizacją Google Workspace, musisz zmienić Typ użytkownika na Zewnętrzny. Następnie dodaj zakresy autoryzacji wymagane przez aplikację. Więcej informacji znajdziesz w pełnym przewodniku Konfigurowanie zgody OAuth.

Autoryzowanie danych logowania do aplikacji na komputer

Aby uwierzytelniać użytkowników i dostępować do ich danych w aplikacji, musisz utworzyć co najmniej 1 identyfikator klienta OAuth 2.0. Identyfikator klienta wskazuje konkretną aplikację na serwerach OAuth Google. Jeśli Twoja aplikacja działa na kilku platformach, musisz utworzyć osobny identyfikator klienta dla każdej z nich.
  1. W konsoli Google Cloud kliknij Menu  > > Klienci.

    Otwórz stronę Klientów

  2. Kliknij Utwórz klienta.
  3. Kliknij Typ aplikacji > Aplikacja na komputer.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. Kliknij Utwórz.

    Nowo utworzone dane uwierzytelniające pojawią się w sekcji „Identyfikatory klienta OAuth 2.0”.

  6. Zapisz pobrany plik JSON jako credentials.json i przenieś go do katalogu roboczego.

Instalowanie biblioteki klienta

  • Zainstaluj biblioteki za pomocą 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. Wklej do pliku ten kod:

    drive/activity-v2/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.activity.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 recent activity in your Google Drive.
     *
     * @param {google.auth.OAuth2} auth An authorized OAuth2 client.
     */
    async function listDriveActivity(auth) {
      const service = google.driveactivity({version: 'v2', auth});
      const params = {
        pageSize: 10,
      };
      const res = await service.activity.query({requestBody: params});
      const activities = res.data.activities;
      if (!activities || activities.length === 0) {
        console.log('No activity.');
        return;
      }
      console.log('Recent activity:');
      activities.forEach((activity) => {
        const time = getTimeInfo(activity);
        const action = getActionInfo(activity.primaryActionDetail);
        const actors = activity.actors.map(getActorInfo);
        const targets = activity.targets.map(getTargetInfo);
        console.log(
            `${time}: ${truncated(actors)}, ${action}, ` + `${truncated(targets)}`,
        );
      });
    }
    
    authorize().then(listDriveActivity).catch(console.error);

Uruchamianie przykładu

  1. Uruchom przykładowy kod w katalogu roboczym:

    node .
    
  1. Gdy uruchomisz próbkę po raz pierwszy, pojawi się prośba o autoryzację dostępu:
    1. Jeśli nie zalogowano się na konto Google, zaloguj się, gdy pojawi się taka prośba. Jeśli logujesz się na kilka kont, wybierz jedno konto, którego chcesz użyć do autoryzacji.
    2. Kliknij Accept (Zaakceptuj).

    Aplikacja Nodejs działa i wywołuje interfejs Google Drive Activity API.

    Informacje autoryzacyjne są przechowywane w systemie plików, więc następnym razem, gdy uruchomisz przykładowy kod, nie pojawi się prośba o autoryzację.

Dalsze kroki