Autenticação
Visão Geral
O SDK delega a autenticação ao pacote bling-jwt-auth,
que implementa o fluxo de Authorization Code do OAuth2 para a API do Bling ERP.
O SDK precisa apenas de um objeto que forneça tokens de acesso. Isso pode ser:
- Um adaptador construído a partir de variáveis de ambiente
- Um adaptador com um
token_providerpersonalizado - Uma instância
httpx.Authpassada diretamente
Variáveis de Ambiente
A maneira mais simples de configurar a autenticação é através de variáveis
de ambiente. O BlingClient.from_env() lê as seguintes variáveis:
| Variável | Descrição | Obrigatória |
|---|---|---|
BLING_CLIENT_ID |
Client ID da sua aplicação no Bling | Sim |
BLING_CLIENT_SECRET |
Client Secret da sua aplicação no Bling | Sim |
BLING_REFRESH_TOKEN |
Refresh token para obter novos access tokens | Sim |
BLING_REDIRECT_URI |
URI de redirecionamento configurada no Bling | Não (default: urn:ietf:wg:oauth:2.0:oob) |
export BLING_CLIENT_ID="seu_client_id"
export BLING_CLIENT_SECRET="seu_client_secret"
export BLING_REFRESH_TOKEN="seu_refresh_token"
Criando um Client com from_env()
from bling_erp_api import BlingClient
# Lê as variáveis BLING_* do ambiente
client = BlingClient.from_env()
# Opcionalmente, use como context manager
with BlingClient.from_env() as client:
# ...
Você também pode passar parâmetros adicionais:
client = BlingClient.from_env(
base_url="https://api.bling.com.br/api/v3",
timeout=30.0,
rate_limit_max_requests=5,
rate_limit_period_seconds=1.0,
)
Custom Token Provider
Se você precisa de controle mais fino sobre a autenticação, implemente o
protocolo AccessTokenProvider:
from httpx import Auth
from bling_erp_api import BlingClient
from bling_jwt_auth import BlingAuth
# Usando bling-jwt-auth diretamente
auth = BlingAuth(
client_id="seu_client_id",
client_secret="seu_client_secret",
refresh_token="seu_refresh_token",
)
client = BlingClient(auth=auth)
Ou implemente seu próprio provedor:
class MyTokenProvider:
def get_access_token(self) -> str:
# Sua lógica de obtenção de token
return "seu_access_token"
client = BlingClient(token_provider=MyTokenProvider())
O Fluxo OAuth2
O bling-jwt-auth gerencia automaticamente:
- Obtenção do access token usando o refresh token
- Renovação automática quando o token expira
- Refresh de token quando necessário
Para obter o refresh token inicial, você precisa passar pelo fluxo de autorização do Bling. Veja a documentação do bling-jwt-auth para instruções detalhadas.