Verwenden Ihre Nutzer Classroom mit Google Meet? Sehen Sie sich die Apps Script-Kurzanleitung zum Ansehen der Teilnahme von Schülern/Studenten in Google Meet-Kursen an.

JavaScript-Kurzanleitung

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

In Kurzanleitungen wird beschrieben, wie Sie eine Anwendung einrichten und ausführen, die eine Google Workspace API aufruft.

In Google Workspace-Kurzanleitungen werden die API-Clientbibliotheken verwendet, um einige Details des Authentifizierungs- und Autorisierungsvorgangs zu verarbeiten. Wir empfehlen, für Ihre eigenen Anwendungen die Clientbibliotheken zu verwenden. Bevor Sie die Beispielanwendung ausführen können, müssen Sie für jede Kurzanleitung die Authentifizierung und Autorisierung aktivieren. Wenn Sie mit der Authentifizierung und Autorisierung für Google Workspace APIs nicht vertraut sind, lesen Sie die Übersicht über Authentifizierung und Autorisierung.

Erstellen Sie eine JavaScript-Befehlszeilenanwendung, die Anfragen an die Google Classroom API sendet.

Lernziele

  • die Umgebung einrichten
  • Richten Sie das Beispiel ein.
  • Führen Sie das Beispiel aus.

Voraussetzungen

  • Ein Google for Education-Konto mit aktiviertem Google Classroom.

Umgebung einrichten

Richten Sie Ihre Umgebung ein, um diese Kurzanleitung abzuschließen.

API aktivieren

Bevor Sie Google APIs verwenden können, müssen Sie sie in einem Google Cloud-Projekt aktivieren. Sie können eine oder mehrere APIs in einem einzelnen Google Cloud-Projekt aktivieren.
  • Aktivieren Sie in der Google Cloud Console die Google Classroom API.

    API aktivieren

Anmeldedaten für eine Webanwendung autorisieren

Damit Sie sich als Endnutzer authentifizieren und auf Nutzerdaten in Ihrer App zugreifen können, müssen Sie mindestens eine OAuth 2.0-Client-ID erstellen. Eine Client-ID wird zur Identifizierung einer einzelnen Anwendung bei OAuth-Servern von Google verwendet. Wenn Ihre Anwendung auf mehreren Plattformen ausgeführt wird, müssen Sie für jede Plattform eine separate Client-ID erstellen.
  1. Öffnen Sie die Google Cloud Console.
  2. Klicken Sie links oben auf das Dreistrich-Menü > APIs &Dienste > Anmeldedaten.
  3. Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
  4. Klicken Sie auf Anwendungstyp> Webanwendung.
  5. Geben Sie im Feld „Name“ einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  6. Fügen Sie autorisierte URIs für Ihre App hinzu:
    • Clientseitige Apps (JavaScript): Klicken Sie unter „Autorisierte JavaScript-Quellen“ auf URI hinzufügen. Geben Sie dann einen URI für Browseranfragen ein. Damit werden die Domains identifiziert, von denen aus Ihre Anwendung API-Anfragen an den OAuth 2.0-Server senden kann.
    • Serverseitige Anwendungen (Java, Python, .NET und mehr): Klicken Sie unter „Autorisierte Weiterleitungs-URIs“ auf URI hinzufügen. Geben Sie dann einen Endpunkt-URI ein, an den der OAuth 2.0-Server Antworten senden kann.
  7. Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird angezeigt. Er enthält Ihre neue Client-ID und Ihren Clientschlüssel.
  8. Notieren Sie sich die Client-ID. Clientschlüssel werden nicht für Webanwendungen verwendet.
  9. Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter den OAuth 2.0-Client-IDs angezeigt.
  10. Optional: Wenn Sie Anmeldedaten als Voraussetzung für eine JavaScript-Kurzanleitung erstellen, müssen Sie auch einen API-Schlüssel generieren.

Notieren Sie sich diese Anmeldedaten, da Sie sie später in dieser Kurzanleitung benötigen.

Beispielanwendung einrichten

  1. Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen index.html.
  2. Fügen Sie den folgenden Beispielcode in die Datei index.html ein:

    Kursraum/Kurzanleitung/index.html
    <!DOCTYPE html>
    <html>
      <head>
        <title>Classroom API Quickstart</title>
        <meta charset="utf-8" />
      </head>
      <body>
        <p>Classroom 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://classroom.googleapis.com/$discovery/rest';
    
          // Authorization scopes required by the API; multiple scopes can be
          // included, separated by spaces.
          const SCOPES = 'https://www.googleapis.com/auth/classroom.courses.readonly';
    
          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 listCourses();
            };
    
            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 the names of the first 10 courses the user has access to. If
           * no courses are found an appropriate message is printed.
           */
          async function listCourses() {
            let response;
            try {
              response = await gapi.client.classroom.courses.list({
                pageSize: 10,
              });
            } catch (err) {
              document.getElementById('content').innerText = err.message;
              return;
            }
    
            const courses = response.result.courses;
            if (!courses || courses.length == 0) {
              document.getElementById('content').innerText = 'No courses found.';
              return;
            }
            // Flatten to string to display
            const output = courses.reduce(
                (str, course) => `${str}${course.name}\n`,
                'Courses:\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>

    Dabei gilt:

Beispiel ausführen

  1. Starten Sie in Ihrem Arbeitsverzeichnis einen Webserver:

    Python 2.x

    python -m SimpleHTTPServer 8000
    

    Python 3.x

    python3 -m http.server 8000
    
  2. Rufen Sie http://localhost:8000 in Ihrem Browser auf.

  3. Wenn Sie das Beispiel zum ersten Mal ausführen, werden Sie aufgefordert, den Zugriff zu autorisieren:

    1. Wenn Sie noch nicht in Ihrem Google-Konto angemeldet sind, werden Sie aufgefordert, sich anzumelden. Wenn Sie in mehreren Konten angemeldet sind, wählen Sie ein Konto zur Autorisierung aus.
    2. Klicken Sie auf Akzeptieren.
    3. Kopieren Sie den Code aus dem Browser, fügen Sie ihn in die Eingabeaufforderung ein und drücken Sie Enter.

    Autorisierungsinformationen werden im Dateisystem gespeichert, sodass Sie beim nächsten Ausführen des Beispielcodes nicht zur Autorisierung aufgefordert werden.

Sie haben Ihre erste JavaScript-Anwendung erstellt, die Anfragen an die Google Classroom API sendet.

Weitere Informationen