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.

PHP-Kurzanleitung

Führen Sie die im Folgenden beschriebenen Schritte aus, um eine einfache PHP-Befehlszeile zu erstellen, die Anfragen an die Classroom API sendet.

Voraussetzungen

Für diese Kurzanleitung sind folgende Voraussetzungen erforderlich:

  • PHP 5.4 oder höher mit installierter Befehlszeile und JSON-Erweiterung
  • Das Tool zum Erstellen von Abhängigkeiten von Composer
  • Ein Google Cloud Platform-Projekt mit aktivierter API. Informationen zum Erstellen eines Projekts und zum Aktivieren einer API finden Sie unter Projekt erstellen und API aktivieren.

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

Schritt 1: Google-Clientbibliothek installieren

composer require google/apiclient:^2.0

Alternative Installationsoptionen finden Sie auf der Installationsseite der Bibliothek.

Schritt 2: Beispiel einrichten

Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen quickstart.php und kopieren Sie den folgenden Code:

Kursraum/Kurzanleitung/Kurzanleitung.php
require __DIR__ . '/vendor/autoload.php';

if (php_sapi_name() != 'cli') {
    throw new Exception('This application must be run on the command line.');
}

use Google\Client;
use Google\Service\Classroom;

/**
 * Returns an authorized API client.
 * @return Client the authorized client object
 */
function getClient()
{
    $client = new Client();
    $client->setApplicationName('Google Classroom API PHP Quickstart');
    $client->setScopes('https://www.googleapis.com/auth/classroom.courses.readonly');
    $client->setAuthConfig('credentials.json');
    $client->setAccessType('offline');
    $client->setPrompt('select_account consent');

    // Load previously authorized token from a file, if it exists.
    // 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.
    $tokenPath = 'token.json';
    if (file_exists($tokenPath)) {
        $accessToken = json_decode(file_get_contents($tokenPath), true);
        $client->setAccessToken($accessToken);
    }

    // If there is no previous token or it's expired.
    if ($client->isAccessTokenExpired()) {
        // Refresh the token if possible, else fetch a new one.
        if ($client->getRefreshToken()) {
            $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
        } else {
            // Request authorization from the user.
            $authUrl = $client->createAuthUrl();
            printf("Open the following link in your browser:\n%s\n", $authUrl);
            print 'Enter verification code: ';
            $authCode = trim(fgets(STDIN));

            // Exchange authorization code for an access token.
            $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
            $client->setAccessToken($accessToken);

            // Check to see if there was an error.
            if (array_key_exists('error', $accessToken)) {
                throw new Exception(join(', ', $accessToken));
            }
        }
        // Save the token to a file.
        if (!file_exists(dirname($tokenPath))) {
            mkdir(dirname($tokenPath), 0700, true);
        }
        file_put_contents($tokenPath, json_encode($client->getAccessToken()));
    }
    return $client;
}


// Get the API client and construct the service object.
$client = getClient();
$service = new Classroom($client);

// Print the first 10 courses the user has access to.
try{

    $optParams = array(
        'pageSize' => 10
    );
    $results = $service->courses->listCourses($optParams);

    if (count($results->getCourses()) == 0) {
        print "No courses found.\n";
    } else {
        print "Courses:\n";
        foreach ($results->getCourses() as $course) {
            printf("%s (%s)\n", $course->getName(), $course->getId());
        }
    }
}
catch(Exception $e) {
    // TODO(developer) - handle error appropriately
    echo 'Message: ' .$e->getMessage();
}

Schritt 3: Beispiel ausführen

Führen Sie das Beispiel mit dem folgenden Befehl aus:

php quickstart.php

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

  1. Rufen Sie in Ihrem Webbrowser die angegebene URL auf.

    Wenn Sie noch nicht in Ihrem Google-Konto angemeldet sind, werden Sie aufgefordert, sich anzumelden. Wenn Sie in mehreren Google-Konten angemeldet sind, werden Sie aufgefordert, ein Konto für die Autorisierung auszuwählen.

  2. Klicken Sie auf die Schaltfläche Akzeptieren.
  3. Kopieren Sie den Code, fügen Sie ihn in die Befehlszeile ein und drücken Sie die Eingabetaste.

Hinweise

  • Autorisierungsinformationen werden im Dateisystem gespeichert, sodass nachfolgende Ausführungen nicht zur Autorisierung auffordern.
  • Der Autorisierungsablauf in diesem Beispiel wurde für eine Befehlszeilenanwendung entwickelt. Informationen zum Ausführen der Autorisierung in einer Webanwendung finden Sie unter OAuth 2.0 für Webserveranwendungen verwenden.

Fehlerbehebung

In diesem Abschnitt werden einige häufige Probleme beschrieben, die beim Ausführen dieser Kurzanleitung auftreten können, und Vorschläge für mögliche Lösungen.

Problem mit SSL-Zertifikat: Zertifikat des lokalen Ausstellers kann nicht abgerufen werden

Dieser Fehler weist darauf hin, dass die zugrunde liegenden HTTP-Bibliotheken keinen Zertifikatspeicher finden und daher die SSL-Verbindung zu den Servern von Google nicht einrichten können. Informationen zum Einrichten eines Zertifikatspeichers auf Ihrem Computer finden Sie in der Dokumentation von Guzzle.

Uncaught InvalidArgumentException: Der erforderliche Weiterleitungs-URI fehlt

Dieser Fehler tritt auf, wenn die verwendete Datei credentials.json eine Client-ID des falschen Typs enthält. Für diesen Code ist eine OAuth-Client-ID vom Typ Other erforderlich, die bei der Verwendung der Schaltfläche in Schritt 1 erstellt wird. Wenn Sie eine eigene Client-ID erstellen, müssen Sie den richtigen Typ auswählen.

This app isn't verified

Wenn auf dem OAuth-Zustimmungsbildschirm die Warnung angezeigt wird, dass Ihre App nicht bestätigt ist, fordert Ihre App Bereiche an, die Zugriff auf vertrauliche Nutzerdaten ermöglichen. Wenn Ihre Anwendung vertrauliche Bereiche verwendet, muss Ihre Anwendung den Bestätigungsprozess durchlaufen, um diese Warnung und andere Einschränkungen zu entfernen. In der Entwicklungsphase können Sie diese Warnung über Advanced > Go to {Project Name}(unsicher) weiterverwenden.

File not found error for credentials.json

Beim Ausführen des Beispiels wird möglicherweise eine Datei gefunden, die nicht gefunden wurde, oder ein solcher Dateifehler in Bezug auf „credentials.json“.

Dieser Fehler tritt auf, wenn Sie die Anmeldedaten für die Desktopanwendung nicht wie oben im Abschnitt Voraussetzungen beschrieben autorisiert haben. Informationen zum Erstellen von Anmeldedaten für eine Desktopanwendung finden Sie unter Anmeldedaten erstellen.

Nachdem Sie die Anmeldedaten erstellt haben, speichern Sie die heruntergeladene JSON-Datei als credentials.json. Verschieben Sie dann die Datei mit dem restlichen Beispielcode in Ihr Arbeitsverzeichnis.

Weitere Informationen