Como Excluir Cursos no Google Classroom Usando a API do Google
Published: 2024-06-03 12:42:48

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](https://console.cloud.google.com/).
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.

    ```bash
    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()