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.

Go – Kurzanleitung

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

Voraussetzungen

Für diese Kurzanleitung sind folgende Voraussetzungen erforderlich:

  • Los. Die neueste Version wird empfohlen.
  • Git, die neueste Version empfohlen.
  • 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.
  • Anmeldedaten für die Autorisierung einer Desktopanwendung Informationen zum Erstellen von Anmeldedaten für eine Desktopanwendung finden Sie unter Anmeldedaten erstellen.

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

Schritt 1: Arbeitsbereich vorbereiten

  1. Legen Sie die Umgebungsvariable GOPATH auf Ihr Arbeitsverzeichnis fest.
  2. Rufen Sie die Go-Clientbibliothek und das OAuth2-Paket der Classroom API mit den folgenden Befehlen ab:
go get -u google.golang.org/api/classroom/v1
go get -u golang.org/x/oauth2/google

Schritt 2: Beispiel einrichten

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

Kursraum/Kurzanleitung/Kurzanleitung.go
package main

import (
	"context"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"os"

	"golang.org/x/oauth2"
	"golang.org/x/oauth2/google"
	"google.golang.org/api/classroom/v1"
	"google.golang.org/api/option"
)

// Retrieve a token, saves the token, then returns the generated client.
func getClient(config *oauth2.Config) *http.Client {
	// 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.
	tokFile := "token.json"
	tok, err := tokenFromFile(tokFile)
	if err != nil {
		tok = getTokenFromWeb(config)
		saveToken(tokFile, tok)
	}
	return config.Client(context.Background(), tok)
}

// Request a token from the web, then returns the retrieved token.
func getTokenFromWeb(config *oauth2.Config) *oauth2.Token {
	authURL := config.AuthCodeURL("state-token", oauth2.AccessTypeOffline)
	fmt.Printf("Go to the following link in your browser then type the "+
		"authorization code: \n%v\n", authURL)

	var authCode string
	if _, err := fmt.Scan(&authCode); err != nil {
		log.Fatalf("Unable to read authorization code: %v", err)
	}

	tok, err := config.Exchange(context.TODO(), authCode)
	if err != nil {
		log.Fatalf("Unable to retrieve token from web: %v", err)
	}
	return tok
}

// Retrieves a token from a local file.
func tokenFromFile(file string) (*oauth2.Token, error) {
	f, err := os.Open(file)
	if err != nil {
		return nil, err
	}
	defer f.Close()
	tok := &oauth2.Token{}
	err = json.NewDecoder(f).Decode(tok)
	return tok, err
}

// Saves a token to a file path.
func saveToken(path string, token *oauth2.Token) {
	fmt.Printf("Saving credential file to: %s\n", path)
	f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
	if err != nil {
		log.Fatalf("Unable to cache oauth token: %v", err)
	}
	defer f.Close()
	json.NewEncoder(f).Encode(token)
}

func main() {
	ctx := context.Background()
	b, err := ioutil.ReadFile("credentials.json")
	if err != nil {
		log.Fatalf("Unable to read credentials file: %v", err)
	}

	// If modifying these scopes, delete your previously saved token.json.
	config, err := google.ConfigFromJSON(b, classroom.ClassroomCoursesReadonlyScope)
	if err != nil {
		log.Fatalf("Unable to parse client secret file to config: %v", err)
	}
	client := getClient(config)

	srv, err := classroom.NewService(ctx, option.WithHTTPClient(client))
	if err != nil {
		log.Fatalf("Unable to create classroom Client %v", err)
	}

	r, err := srv.Courses.List().PageSize(10).Do()
	if err != nil {
		log.Fatalf("Unable to retrieve courses. %v", err)
	}
	if len(r.Courses) > 0 {
		fmt.Print("Courses:\n")
		for _, c := range r.Courses {
			fmt.Printf("%s (%s)\n", c.Name, c.Id)
		}
	} else {
		fmt.Print("No courses found.")
	}
}

Schritt 3: Beispiel ausführen

Erstellen Sie das Beispiel mit dem folgenden Befehl aus Ihrem Arbeitsverzeichnis und führen Sie es aus:

go run quickstart.go

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 bei nachfolgenden Ausführungen keine Autorisierung angefordert wird.
  • 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.

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

Weitere Informationen zu den in dieser Kurzanleitung verwendeten APIs finden Sie im Abschnitt zu „google-api-go-client“ auf GitHub (in englischer Sprache).