Estou tentando consumir a api para obter o token via curl do php.
Porém estou tendo o seguindo retorno:
string(75) “{“error”:“invalid_client”,“error_description”:“Invalid client credentials”}”
Teriam um exemplo de consumo via curl ou postman?
O erro indica que o client id que você usou é inválido.
Este tópico da documentação da Nuvem Fiscal mostra como montar a requisição para obter o token:
Lembrando que existem credenciais diferentes para a API em produção e a API sandbox. Se usar uma credencial de produção na API sandbox (ou vice-versa), vai receber a mensagem que você está recebendo.
Se ainda estiver com dúvida, cole aqui a requisição exata que você está tentando fazer, seja no curl ou no Postman, para que possamos tentar identificar se há algum problema e sugerir uma solução. Obviamente, troque o client id e o client secret reais para valores fictícios antes de postar aqui, para não informar suas credenciais publicamente.
Bom dia, Wagner nesse caso o que indica que é teste ou produção? Link, campo?
https://auth.nuvemfiscal.com.br/oauth/token
Estou usando essa url no caso.
Ah sim, desculpe, essa URL é usada para obter o token a partir das credenciais. Nesse caso, é a mesma para ambas as APIs. Com o token gerado é que você precisa usar ele na API certa, ou https://api.nuvemfiscal.com.br
ou https://api.sandbox.nuvemfiscal.com.br
.
Entendi, mas nesse caso como que consigo um token por exemplo em sandbox, ja que os dados que estou usando é no sandbox e o mesmo esta retornando que não esta correto.
O erro acontece nessa chamada.
https://auth.nuvemfiscal.com.br/oauth/token
Pra conseguir um token para o sandbox, você precisa gerar as credenciais (client id e client secret) para sandbox, e aí solicitar um token chamando essa URL que você passou no domínio auth.nuvemfiscal.com.br
.
Se a chamada tem erro, cole aqui a requisição exata que você está tentando fazer, seja no curl ou no Postman, como solicitei acima (trocando o id e secret).
Segue conforme solicitado.
$url = "https://auth.nuvemfiscal.com.br/oauth/token";
$curl = curl_init();
$post = "grant_type=client_credentials&client_id=$client_id&client_secret=$client_secret&scope=cep%20cnpj%20nfse%20mdfe";
var_dump($post);
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $post,
CURLOPT_HTTPHEADER => array(
'Host: auth.nuvemfiscal.com.br',
'Content-Type: application/x-www-form-urlencoded',
'Content-Length: 91',
),
));
$response = curl_exec($curl);
A princípio parece certo. Tem certeza que o client_id
que você está colocando é exatamente o que foi fornecido nas credenciais? Consegue inspecionar a requisição HTTP pra ver se o client_id correto está lá?
Bom dia,
As informações do client estão corretas na chamada.
Não teria como saber o que está chegando na API de voces?
Qual é o e-mail da sua conta na Nuvem Fiscal?
Qual é o client id que você está usando (pode colocar o início dele aqui, não precisa colocar tudo).
Olá @antonio,
Segue um exemplo de requisição via curl
:
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=client_credentials&client_id=seu-client-id&client_secret=seu-client-secret&scope=cep%20cnpj%20nfse" https://auth.nuvemfiscal.com.br/oauth/token
Favor testar substituindo os parâmetros client_id
e client_secret
pelas suas credenciais obtidas no Console da Nuvem Fiscal. Caso continue recebendo um erro, favor adicionar o parâmetro -v
(ou --verbose
) ao curl
e postar aqui a saída do comando (ocultando suas credenciais, obviamente).
Bom dia,
Efetuei o teste e funcionou a chamada.
Vocês teriam um exemplo no postman para que eu possa importar, ou curl php?
Não tem muito segredo, é só usar os mesmos parâmetros que foram informados. No Postman precisa informar o método POST e a URL, o header de content-type e o conteúdo da mensagem.
Havia pedido detalhes de com você estava fazendo com o Postman, um print de tela, algo assim, para a gente tentar identificar o que você está fazendo de errado.
A imagem mostra que a URL que você está acessando está diferente. Parece que você inverteu a ordem dos nomes:
Aparentemente você colocou &<seu-client-id>=$client_id
, o que não faz muito sentido.
O certo é client_id=<seu-client-id>
, ou seja, o texto client_id
à esquerda (sem o cifrão), um igual (=
) e então o seu client id.
O método deve ser POST, não GET. Qual foi o erro que você recebeu na requisição acima? Coloque o erro também, facilita o suporte.
Alterei para post.
Apenas fica solicitando requisição e não retorna. Poderiam me mandar um print de uma requisição do postman de voces?
Segue a nossa requisição via Postman.
Note que usei seu próprio client_id e client_secret, acabou vazando na imagem acima. Recomendo que você apague essas credenciais imediatamente no Console da Nuvem Fiscal e crie outra.
o que tem na aba header?