Guia de início rápido do Go

Os tutoriais rápidos explicam como configurar e executar um app que chama uma API do Google Workspace.

Os guias de início rápido do Google Workspace usam as bibliotecas de cliente da API para processar alguns detalhes do fluxo de autenticação e autorização. Recomendamos que você use as bibliotecas de cliente para seus próprios apps. Este guia de início rápido usa uma abordagem de autenticação simplificada que é adequada para um ambiente de teste. Para um ambiente de produção, recomendamos que você aprenda sobre autenticação e autorização antes de escolher as credenciais de acesso adequadas para o app.

Crie um aplicativo de linha de comando Go que faça solicitações à API Google Classroom.

Objetivos

  • Prepare o ambiente.
  • Configure a amostra.
  • Execute a amostra.

Pré-requisitos

  • Uma conta do Google for Education com o Google Sala de Aula ativado.

Configurar o ambiente

Para concluir este guia de início rápido, configure seu ambiente.

Ativar a API

Antes de usar as APIs do Google, você precisa ativá-las em um projeto do Google Cloud. É possível ativar uma ou mais APIs em um único projeto do Google Cloud.
  • No console do Google Cloud, ative a API Google Sala de Aula.

    Ativar a API

Se você estiver usando um novo projeto do Google Cloud para concluir este guia de início rápido, configure a tela de consentimento do OAuth. Se você já concluiu esta etapa para seu projeto do Cloud, pule para a próxima seção.

  1. No console do Google Cloud, acesse Menu > > Marca.

    Acessar "Branding"

  2. Se você já tiver configurado o , poderá configurar as seguintes configurações da tela de consentimento do OAuth em Marca, Público-alvo e Acesso a dados. Se você receber a mensagem ainda não configurado, clique em Começar:
    1. Em Informações do app, em Nome do app, insira um nome para o app.
    2. Em E-mail para suporte do usuário, escolha um endereço de e-mail de suporte para que os usuários entrem em contato com você se tiverem dúvidas sobre o consentimento.
    3. Clique em Próxima.
    4. Em Público, selecione Interno.
    5. Clique em Próxima.
    6. Em Dados de contato, insira um endereço de e-mail para receber notificações sobre as mudanças no projeto.
    7. Clique em Próxima.
    8. Em Concluir, analise a Política de dados do usuário dos serviços de API do Google e, se concordar, selecione Concordo com a política de dados do usuário dos serviços de API do Google.
    9. Clique em Continuar.
    10. Clique em Criar.
  3. Por enquanto, você pode pular a adição de escopos. No futuro, quando você criar um app para uso fora da sua organização do Google Workspace, será necessário mudar o Tipo de usuário para Externo. Em seguida, adicione os escopos de autorização necessários para o app. Para saber mais, consulte o guia completo Configurar a permissão OAuth.

Autorizar credenciais para um aplicativo para computador

Para autenticar usuários finais e acessar dados do usuário no app, crie um ou mais IDs do cliente OAuth 2.0. Um ID do cliente é usado para identificar um único app nos servidores OAuth do Google. Se o app for executado em várias plataformas, crie um ID do cliente separado para cada plataforma.
  1. No console do Google Cloud, acesse Menu > > Clientes.

    Acesse "Clientes"

  2. Clique em Criar cliente.
  3. Clique em Tipo de aplicativo > App para computador.
  4. No campo Nome, digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
  5. Clique em Criar.

    A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".

  6. Salve o arquivo JSON baixado como credentials.json e mova-o para o diretório de trabalho.

Preparar o espaço de trabalho

  1. Crie um diretório de trabalho:

    mkdir quickstart
    
  2. Mude para o diretório de trabalho:

    cd quickstart
    
  3. Inicialize o novo módulo:

    go mod init quickstart
    
  4. Baixe a biblioteca de cliente Go da API Google Classroom e o pacote OAuth2.0:

    go get google.golang.org/api/classroom/v1
    go get golang.org/x/oauth2/google
    

Configure a amostra

  1. No diretório de trabalho, crie um arquivo chamado quickstart.go.

  2. No arquivo, cole o seguinte código:

    classroom/quickstart/quickstart.go
    package main
    
    import (
    	"context"
    	"encoding/json"
    	"fmt"
    	"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 := os.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.")
    	}
    }

Executar a amostra

  1. No diretório de trabalho, crie e execute o exemplo:

    go run quickstart.go
    
  1. Na primeira vez que você executar o exemplo, será necessário autorizar o acesso:
    1. Faça login na sua Conta do Google, caso ainda não tenha feito. Se você tiver feito login em várias contas, selecione uma para usar na autorização.
    2. Clique em Aceitar.

    O aplicativo Go é executado e chama a API Google Classroom.

    As informações de autorização são armazenadas no sistema de arquivos. Assim, na próxima vez que você executar o código de exemplo, não será necessário fazer a autorização.

Próximas etapas