--- name: Bling OAuth FORBIDDEN = fatura em aberto description: Bling recusa OAuth com FORBIDDEN quando conta esta com funcionalidades reduzidas - flash message do callback explica causas type: feedback originSessionId: 4fcacab0-14f5-48d4-9ca9-322e9af89c9f aliases: - Bling FORBIDDEN - Bling OAuth fatura - Bling conta restrita tags: - claude-memory/feedback - bling - oauth - integracao created: 2026-05-04 --- # Bling OAuth FORBIDDEN = fatura em aberto > [!danger] Sintoma confuso > Quando o Bling devolve `error=FORBIDDEN&error_description=O usuário não possui autorização para acessar os recursos requisitados` no callback OAuth, **NÃO é problema do nosso código nem do app OAuth**. ## Causa raiz mais comum **Fatura do plano Bling em aberto** → Bling põe a conta em modo "funcionalidades reduzidas" e suspende a API. OAuth retorna `FORBIDDEN` como se o user não tivesse permissão. ### Sinais paralelos no painel Bling - Banner **laranja** no topo: _"Sua fatura de [mês] ainda está em aberto"_ - Banner **vermelho** no rodapé: _"Você está com funcionalidades reduzidas"_ - Webhook do app fica com badge **"Webhook inativo por erros na operação"** ### Outras causas possíveis (raras) 1. App OAuth pertence a outra conta Bling e a empresa não foi adicionada em **Empresas autorizadas** no painel `developer.bling.com.br/aplicativos`. 2. Usuário logado tem permissão restrita dentro da conta Bling (sem acesso a _Aplicativos/Integrações_). ## Why User levou horas em **2026-05-04** debugando achando que era `client_id`, escopo, login errado etc. Só depois de ver screenshot do painel Bling com o aviso de fatura em aberto que deu pra correlacionar. Confirmado com conta GotechBr id=5: outras 2 contas com **mesmo `client_id`** (G Closet, VALOR MÓVEIS) conectavam normal — única diferença era plano em aberto na GotechBr. ## How to apply Quando aparecer `FORBIDDEN` no callback Bling: 1. **Pedir screenshot do painel Bling** ([bling.com.br](https://www.bling.com.br)) ANTES de mexer no código — geralmente já tem o aviso de fatura/plano em destaque. 2. Se a conta tem fatura em aberto, **a única solução é pagar** — não adianta refazer `client_id`/`secret` nem reautorizar. 3. Após pagamento aguardar até 48h para compensação bancária, depois clicar Conectar normalmente. ## Código `app/Controllers/Bling.php::callback()` já tem branch dedicado pro `FORBIDDEN` que retorna flash message com checklist das 3 causas em ordem de probabilidade. Implementado **2026-05-04**. ```php if (stripos($error, 'FORBIDDEN') !== false || stripos($msg, 'nao possui autoriza') !== false) { // ... mensagem detalhada com 3 causas: fatura, app não autorizado, permissão de usuário ... } ``` ## Diagnóstico rápido > [!tip] Regra prática > Tela _"Cadastro de aplicativos"_ no Bling com app **Aprovado/Público** + `FORBIDDEN` no callback ≈ **fatura em aberto**. > Confirmado em 2026-05-04 com conta GotechBr id=5. ## Links - [[bling_integracao|Bling integracao]] - [[bling_fingerprint_fix|Bling fingerprint fix]] - [[acessos_servidores|Acessos servidores]]