JavaScript – krótkie wprowadzenie

Krótkie wprowadzenia wyjaśniają, jak skonfigurować i uruchomić aplikację, która wywołuje interfejs Google Workspace API.

W krótkich wprowadzeniu do Google Workspace do obsługi niektórych szczegółów procesu uwierzytelniania i autoryzacji używane są biblioteki klienta interfejsu API. Na potrzeby własnych aplikacji zalecamy używanie bibliotek klienta. W tym krótkim wprowadzeniu zastosowano uproszczoną metodę uwierzytelniania odpowiednią do środowiska testowego. W przypadku środowiska produkcyjnego zalecamy zapoznanie się z uwierzytelnianiem i autoryzacją przed wybraniem danych logowania odpowiednich do aplikacji.

Utworzyć aplikację internetową w języku JavaScript, która wysyła żądania do interfejsu Seller API.

Cele

  • skonfigurować środowisko,
  • Skonfiguruj sampel.
  • Uruchom przykład.

Wymagania wstępne

  • Wystąpienie domeny sprzedawcy Google.
  • Pełno podpisana umowa partnerska Google Workspace.

Konfigurowanie środowiska

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

Włącz API

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

Jeśli do wykonania tego samouczka używasz nowego projektu Google Cloud, skonfiguruj ekran zgody OAuth i dodaj siebie jako użytkownika testowego. Jeśli ten krok został już ukończony w przypadku Twojego projektu 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. Wybierz typ użytkownika swojej aplikacji, a potem kliknij Utwórz.
  3. Wypełnij formularz rejestracji aplikacji, a następnie kliknij Zapisz i kontynuuj.
  4. Na razie możesz pominąć dodawanie zakresów i kliknąć Zapisz i kontynuuj. Gdy w przyszłości będziesz tworzyć aplikację do użytku poza organizacją Google Workspace, musisz dodać i zweryfikować zakresy autoryzacji wymagane przez tę aplikację.

  5. Jeśli jako typ użytkownika wybierzesz Zewnętrzny, dodaj użytkowników testowych:
    1. W sekcji Użytkownicy testowi kliknij Dodaj użytkowników.
    2. Wpisz swój adres e-mail oraz adresy pozostałych autoryzowanych użytkowników testowych, a następnie kliknij Zapisz i kontynuuj.
  6. Przejrzyj podsumowanie rejestracji aplikacji. Aby wprowadzić zmiany, kliknij Edytuj. Jeśli rejestracja aplikacji wygląda OK, kliknij Back to Dashboard (Powrót do panelu).

Autoryzacja danych logowania do aplikacji internetowej

Aby uwierzytelnić się jako użytkownik i uzyskać dostęp do danych użytkownika 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 wielu platformach, musisz utworzyć oddzielny identyfikator klienta dla każdej z nich.
  1. W konsoli Google Cloud otwórz Menu > Interfejsy API i usługi > Dane logowania.

    Otwórz stronę Dane logowania

  2. Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
  3. Kliknij Typ aplikacji > Aplikacja internetowa.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. Dodaj autoryzowane identyfikatory URI powiązane z aplikacją:
    • Aplikacje po stronie klienta (JavaScript) – w sekcji Autoryzowane źródła JavaScript kliknij Dodaj identyfikator URI. Następnie wpisz identyfikator URI, którego będziesz używać do obsługi żądań przeglądarki. Określa domeny, z których aplikacja może wysyłać żądania interfejsu API do serwera OAuth 2.0.
    • Aplikacje po stronie serwera (Java, Python i inne) – w sekcji Autoryzowane identyfikatory URI przekierowania kliknij Dodaj identyfikator URI. Następnie wpisz identyfikator URI punktu końcowego, do którego serwer OAuth 2.0 może wysyłać odpowiedzi.
  6. Kliknij Utwórz. Pojawi się ekran utworzonego klienta OAuth zawierający nowy identyfikator i tajny klucz klienta.

    Zapisz identyfikator klienta. Tajne klucze klienta nie są używane w przypadku aplikacji internetowych.

  7. Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji Identyfikatory klienta OAuth 2.0.

Zanotuj te dane logowania, ponieważ będą Ci potrzebne później w tym krótkim wprowadzeniu.

utworzysz klucz interfejsu API;

  1. W konsoli Google Cloud otwórz Menu > Interfejsy API i usługi > Dane logowania.

    Otwórz stronę Dane logowania

  2. Kliknij Utwórz dane logowania > Klucz interfejsu API.
  3. Zostanie wyświetlony nowy klucz interfejsu API.
    • Kliknij Kopiuj , aby skopiować klucz interfejsu API i użyć go w kodzie aplikacji. Klucz interfejsu API znajdziesz też w sekcji „Klucze interfejsu API” danych logowania projektu.
    • Kliknij Ogranicz klucz, aby zaktualizować ustawienia zaawansowane i ograniczyć wykorzystanie klucza interfejsu API. Więcej informacji znajdziesz w artykule Stosowanie ograniczeń klucza interfejsu API.

Konfigurowanie fragmentu

  1. W katalogu roboczym utwórz plik o nazwie index.html.
  2. W pliku index.html wklej ten przykładowy kod:

    adminSDK/reseller/index.html
    <!DOCTYPE html>
    <html>
      <head>
        <title>Google Workspace Reseller API Quickstart</title>
        <meta charset="utf-8" />
      </head>
      <body>
        <p>Google WOrkspace Reseller API Quickstart</p>
    
        <!--Add buttons to initiate auth sequence and sign out-->
        <button id="authorize_button" onclick="handleAuthClick()">Authorize</button>
        <button id="signout_button" onclick="handleSignoutClick()">Sign Out</button>
    
        <pre id="content" style="white-space: pre-wrap;"></pre>
    
        <script type="text/javascript">
          /* exported gapiLoaded */
          /* exported gisLoaded */
          /* exported handleAuthClick */
          /* exported handleSignoutClick */
    
          // TODO(developer): Set to client ID and API key from the Developer Console
          const CLIENT_ID = '<YOUR_CLIENT_ID>';
          const API_KEY = '<YOUR_API_KEY>';
    
          // Discovery doc URL for APIs used by the quickstart
          const DISCOVERY_DOC = 'https://www.googleapis.com/discovery/v1/apis/reseller/v1/rest';
    
          // Authorization scopes required by the API; multiple scopes can be
          // included, separated by spaces.
          const SCOPES = 'https://www.googleapis.com/auth/apps.order';
    
          let tokenClient;
          let gapiInited = false;
          let gisInited = false;
    
          document.getElementById('authorize_button').style.visibility = 'hidden';
          document.getElementById('signout_button').style.visibility = 'hidden';
    
          /**
           * Callback after api.js is loaded.
           */
          function gapiLoaded() {
            gapi.load('client', initializeGapiClient);
          }
    
          /**
           * Callback after the API client is loaded. Loads the
           * discovery doc to initialize the API.
           */
          async function initializeGapiClient() {
            await gapi.client.init({
              apiKey: API_KEY,
              discoveryDocs: [DISCOVERY_DOC],
            });
            gapiInited = true;
            maybeEnableButtons();
          }
    
          /**
           * Callback after Google Identity Services are loaded.
           */
          function gisLoaded() {
            tokenClient = google.accounts.oauth2.initTokenClient({
              client_id: CLIENT_ID,
              scope: SCOPES,
              callback: '', // defined later
            });
            gisInited = true;
            maybeEnableButtons();
          }
    
          /**
           * Enables user interaction after all libraries are loaded.
           */
          function maybeEnableButtons() {
            if (gapiInited && gisInited) {
              document.getElementById('authorize_button').style.visibility = 'visible';
            }
          }
    
          /**
           *  Sign in the user upon button click.
           */
          function handleAuthClick() {
            tokenClient.callback = async (resp) => {
              if (resp.error !== undefined) {
                throw (resp);
              }
              document.getElementById('signout_button').style.visibility = 'visible';
              document.getElementById('authorize_button').innerText = 'Refresh';
              await listSubscriptions();
            };
    
            if (gapi.client.getToken() === null) {
              // Prompt the user to select a Google Account and ask for consent to share their data
              // when establishing a new session.
              tokenClient.requestAccessToken({prompt: 'consent'});
            } else {
              // Skip display of account chooser and consent dialog for an existing session.
              tokenClient.requestAccessToken({prompt: ''});
            }
          }
    
          /**
           *  Sign out the user upon button click.
           */
          function handleSignoutClick() {
            const token = gapi.client.getToken();
            if (token !== null) {
              google.accounts.oauth2.revoke(token.access_token);
              gapi.client.setToken('');
              document.getElementById('content').innerText = '';
              document.getElementById('authorize_button').innerText = 'Authorize';
              document.getElementById('signout_button').style.visibility = 'hidden';
            }
          }
    
          /**
           * Print first ten subscriptions.
           */
          async function listSubscriptions() {
            let response;
            try {
              response = await gapi.client.reseller.subscriptions.list({
                'maxResults': 10,
              });
            } catch (err) {
              document.getElementById('content').innerText = err.message;
              return;
            }
    
            const subscriptions = response.result.subscriptions;
            if (!subscriptions || subscriptions.length == 0) {
              document.getElementById('content').innerText = 'No subscriptions found.';
              return;
            }
            // Flatten to string to display
            const output = subscriptions.reduce(
                (str, subscription) => {
                  const customer = subscription.customerId;
                  const sku = subscription.skuId;
                  const plan = subscription.plan.planName;
                  return `${str}${customer} (${sku},${plan})\n`;
                },
                'Subscriptions:\n');
            document.getElementById('content').innerText = output;
          }
        </script>
        <script async defer src="https://apis.google.com/js/api.js" onload="gapiLoaded()"></script>
        <script async defer src="https://accounts.google.com/gsi/client" onload="gisLoaded()"></script>
      </body>
    </html>

    Zastąp następujące elementy:

Uruchamianie przykładu

  1. W katalogu roboczym zainstaluj pakiet http-server:

    npm install http-server
    
  2. W swoim katalogu roboczym uruchom serwer WWW:

    npx http-server -p 8000
    
  1. W przeglądarce otwórz stronę http://localhost:8000.
  2. Pojawi się prośba o autoryzację dostępu:
    1. Jeśli wyświetli się prośba o zalogowanie się na konto Google, zaloguj się, gdy pojawi się taka prośba. Jeśli logujesz się na wiele kont, wybierz jedno, którego chcesz użyć do autoryzacji.
    2. Kliknij Accept (Zaakceptuj).

Aplikacja JavaScript uruchamia się i wywołuje interfejs Seller API.

Dalsze kroki