Skip to main content

Um SDK Python robusto e simples para gerenciar autenticação OAuth2 com a API do Brightspace (D2L).

Project description

D2L Auth SDK

Um SDK Python robusto e simples para gerenciar autenticação OAuth2 com a API do Brightspace (D2L).

Este projeto facilita a integração com a API do D2L, gerenciando automaticamente o ciclo de vida dos tokens de acesso (obtenção, armazenamento e renovação), com suporte integrado para notificações de erro via Google Chat.

✨ Funcionalidades

  • Autenticação OAuth2 Simplificada: Abstrai a complexidade do fluxo de autorização.
  • Renovação Automática: Gerencia transparentemente a expiração e renovação de tokens usando refresh tokens.
  • Notificações de Monitoramento: Envia alertas em tempo real para o Google Chat em caso de falhas críticas.
  • Gestão de Escopos: Flexibilidade para definir permissões granulares de acesso.
  • Persistência Segura: Armazena tokens localmente para reutilização entre execuções.

🚀 Instalação

Pré-requisitos

  • Python 3.7 ou superior.
  • Credenciais de desenvolvedor Brightspace (Client ID e Client Secret).

Instalando via pip (Localmente)

Clone o repositório e instale em modo editável:

git clone https://github.com/seu-usuario/d2l-auth-sdk.git
cd d2l-auth-sdk
pip install .

Ou instale as dependências diretamente:

pip install -r requirements.txt

⚙️ Configuração

Crie um arquivo .env na raiz do seu projeto com as seguintes variáveis:

CLIENT_ID=seu_client_id
CLIENT_SECRET=seu_client_secret
STATE=uma_string_aleatoria_de_seguranca
WEBHOOK_GOOGLE_CHAT=https://chat.googleapis.com/v1/spaces/...
Variável Descrição Obrigatório
CLIENT_ID Seu ID de cliente da API Brightspace. Sim
CLIENT_SECRET Seu segredo de cliente da API Brightspace. Sim
STATE String arbitrária para proteção CSRF. Sim
WEBHOOK_GOOGLE_CHAT URL do webhook para receber alertas de erro. Não

📖 Como Usar

1. Inicialização

Importe a classe D2lAuthManager e configure os escopos necessários:

from d2l_auth_sdk.d2l_auth import D2lAuthManager

# Defina os escopos que sua aplicação precisa
SCOPES = [
    'core:*:*',
    'grades:*:read',
    'users:profile:read'
]

# Inicialize o gerenciador
auth_manager = D2lAuthManager(
    scopes=SCOPES,
    token_file_d2l='token_d2l.json' # Arquivo onde o token será salvo
)

2. Autenticação Inicial (Primeira vez)

Na primeira execução, você precisará autorizar a aplicação manualmente:

# Inicia o fluxo de autenticação
# Isso irá gerar uma URL para você abrir no navegador
auth_manager.authenticate()

Siga as instruções no terminal:

  1. Abra a URL gerada.
  2. Faça login no Brightspace e autorize o acesso.
  3. Você será redirecionado para uma página (ex: localhost ou uma URL de callback).
  4. Copie a URL final do navegador e cole no terminal quando solicitado.

3. Uso Diário (Renovação Automática)

Para fazer chamadas à API, obtenha um token válido. O SDK cuidará da renovação se ele estiver expirado.

try:
    # Obtém um token de acesso válido (renova automaticamente se necessário)
    access_token = auth_manager.manage_token()
    
    # Use o token em suas requisições
    headers = {'Authorization': f'Bearer {access_token}'}
    response = requests.get('https://seu-lms.brightspace.com/d2l/api/lp/1.43/users/whoami', headers=headers)
    
    print(response.json())

except Exception as e:
    print(f"Erro na autenticação: {e}")

🛠️ Desenvolvimento

Para contribuir com o projeto:

  1. Crie um ambiente virtual: python -m venv .venv
  2. Ative o ambiente: .venv\Scripts\activate (Windows) ou source .venv/bin/activate (Linux/Mac)
  3. Instale as dependências de desenvolvimento: pip install build twine

Construindo o Pacote

Para gerar os arquivos de distribuição (.tar.gz e .whl):

python -m build

📄 Licença

Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para detalhes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

d2l_auth_sdk_dev_fecaf-0.1.1.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

d2l_auth_sdk_dev_fecaf-0.1.1-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file d2l_auth_sdk_dev_fecaf-0.1.1.tar.gz.

File metadata

  • Download URL: d2l_auth_sdk_dev_fecaf-0.1.1.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for d2l_auth_sdk_dev_fecaf-0.1.1.tar.gz
Algorithm Hash digest
SHA256 96fcf0ac2a8d106dbe4021101cc0859e2fcb91e2ca80b898f959795c2cb582f2
MD5 1b6ada427b9b6f7e24822d2db95d0f43
BLAKE2b-256 a03135044419245c6aef1a6713b8d13ebfc4f0f32e8b4e0f0ab09d788eaa8d14

See more details on using hashes here.

File details

Details for the file d2l_auth_sdk_dev_fecaf-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for d2l_auth_sdk_dev_fecaf-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c4b88f55d571a7a7251744f9c9dc2d42062b986e9b1a25af49aac27988406672
MD5 fcc61a34cb228327d582d157f9366164
BLAKE2b-256 f1f7acffb8531e1d1def3458073277d0244932fff78667976a81759b40b3baa8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page