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

Como publicar uma atualização no PyPI

Passo Comando / ação
1 Aumentar version no setup.py (ex.: 0.1.2)
2 python -m build (com build instalado)
3 Ter conta + token no PyPI
4 twine upload dist/* (ou twine upload --repository testpypi dist/* para Test PyPI)
5 pip install --upgrade d2l-auth-sdk-dev-fecaf

📄 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.3.tar.gz (6.0 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.3-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: d2l_auth_sdk_dev_fecaf-0.1.3.tar.gz
  • Upload date:
  • Size: 6.0 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.3.tar.gz
Algorithm Hash digest
SHA256 47c1fe55b451b295487825d9f75914f26e84c91eaca52e38cba78d3ec3edad4b
MD5 b95f0d454b8856cf4cd0efe4c49e115f
BLAKE2b-256 f7a8c1fcfb31ef8a22dccffb0a0ffdb1adc635f3baf4d9030e67fc77a83aaf59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for d2l_auth_sdk_dev_fecaf-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 92fe762fa0f2a5c30641b569851ad8ce3d00cef32477c476438187632f0f442f
MD5 dfffaddfe2eb33899efdfafab7da6d7c
BLAKE2b-256 7fcfbd8d0f47fd74b9226205628a26c355b30723b78f547e1dc78abc57f39386

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