DEV Community

Marcus Andrade
Marcus Andrade

Posted on

Como Excluir Cursos no Google Classroom Usando a API do Google

Neste artigo, vamos documentar como usar a API do Google Classroom para listar e excluir cursos. Vamos detalhar o passo a passo necessário para configurar e executar o código Python que realiza essas operações.

Passo a Passo

Autenticação: O código verifica se o arquivo token.json existe para utilizar credenciais armazenadas previamente. Caso contrário, ele inicia o fluxo de autenticação OAuth 2.0.

Listar Cursos: O código chama a API do Google Classroom para listar todos os cursos disponíveis.

Excluir Curso: O código solicita o ID do curso a ser excluído e chama a API para excluir o curso especificado.

Execução
Execute o Script: Execute o script Python.
Autenticação Inicial: Se for a primeira execução, você será redirecionado para uma página de login do Google para conceder permissões ao aplicativo.
Listar Cursos: Após a autenticação, o script listará todos os cursos disponíveis.
Excluir Curso: Insira o ID do curso que você deseja excluir.

Pré-requisitos

  1. Conta do Google: Certifique-se de ter uma conta do Google.
  2. Google Cloud Project: Crie um projeto no Google Cloud Console.
  3. API do Google Classroom: Ative a API do Google Classroom para o seu projeto.
  4. Credenciais OAuth 2.0: Configure as credenciais OAuth 2.0 para o seu projeto.

Configuração do Ambiente

  1. Instale as bibliotecas necessárias: Execute o comando abaixo para instalar as bibliotecas necessárias.

    pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client
    
  2. Crie um arquivo credentials.json: Baixe as credenciais OAuth 2.0 do Google Cloud Console e salve-as como credentials.json no diretório do seu projeto.

Código Python

Aqui está o código completo para listar e excluir cursos no Google Classroom:


python
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# Escopos necessários para listar cursos, adicionar alunos e professores, criar e excluir cursos no Google Classroom
SCOPES = [
    "https://www.googleapis.com/auth/classroom.courses",
    "https://www.googleapis.com/auth/classroom.courses.readonly",
    "https://www.googleapis.com/auth/classroom.rosters"
]

def main():
    """
    Código usado para excluir um curso do Google Classroom.
    """
    creds = None
    if os.path.exists("token.json"):
        creds = Credentials.from_authorized_user_file("token.json", SCOPES)
    # Vai pedir autenticação 
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                "credentials.json", SCOPES
            )
            creds = flow.run_local_server(port=0)
        # Salva as credenciais e mostra os cursos
        with open("token.json", "w") as token:
            token.write(creds.to_json())

    try:
        service = build("classroom", "v1", credentials=creds)

        # Lista todos os cursos disponíveis
        list_courses(service)

        # Solicita o ID do curso a ser excluído
        course_id = input("Digite o ID do curso a ser excluído: ")
        delete_course(service, course_id)

    except HttpError as error:
        print(f"An error occurred: {error}")

def list_courses(service):
    try:
        # Chama a API Do classroom para ver os cursos
        results = service.courses().list(pageSize=1000).execute()
        courses = results.get("courses", [])

        if not courses:
            print("No courses found.")
            return

        # Mostra na tela o nome dos cursos criados e salas
        print("Courses:")
        for course in courses:
            print(f'{course["name"]} (ID: {course["id"]})')

    except HttpError as error:
        print(f"An error occurred: {error}")

def delete_course(service, course_id):
    try:
        service.courses().delete(id=course_id).execute()
        print(f"Course with ID {course_id} deleted successfully.")
    except HttpError as error:
        print(f"An error occurred: {error}")

if __name__ == "__main__":
    # Apagar o arquivo token.json para forçar a reautenticação
    if os.path.exists("token.json"):
        os.remove("token.json")
    main()
Enter fullscreen mode Exit fullscreen mode

Top comments (0)