Erro na autenticação

Minhas credenciais do sandbox estão retornando “unauthorized”

Boa tarde, @gui_cp. Seja bem-vindo à Nuvem Fiscal.

Sua requisição está incorreta.

A URL para obtenção do token é https://auth.nuvemfiscal.com.br/oauth/token.

Para mais informações, consulte a nossa documentação:

Bom dia pessoal, estou tentando consultar o CEP para ver a api funcionando, Já consigo obter meu token e já tenho meu client_id e client_secret e estou usando o exemplo do SDK mas esta dando este erro tanto em homologação quanto em produção:

Exception when calling CepApi->consultarCep: [401] Client error: GET https://api.nuvemfiscal.com.br/cep/94445570 resulted in a 401 Unauthorized response:
Unauthorized

Bom dia, @edubrigoni. Seja bem-vindo à Nuvem Fiscal.

Você está incluindo o scope cep na sua requisição para obter o token?

Poderia dar mais detalhes dela?

Bom dia, sim estou incluindo como no manual.
$scope = “cep cnpj”;

E como está a sua requisição ao endpoint de consulta de CEP? Você está incluindo o token nela?

Estou usando o exemplo do SDK e não mostra na documentação como passar o token na função
$result = $apiInstance->consultarCep($cep);

Aqui tem um exemplo completo:

Não conseguiu seguindo esses passos?

Boa tarde, não consegui, usei exatamente como no exemplo, mas só funcionou quando fiz na mão usando cURL.

Siga o exemplo deste link:

Se não der certo, cole o seu código PHP para que nós ou alguém possa ter alguma ideia.

Boa tarde segue o meu código;

<?php
    require_once(__DIR__ . '../../vendor/autoload.php');
    // Obter token a partir das credenciais
    $client_id        = "meu_client_id"; 
    $client_secret = "meu_client_secret";
    $token = get_oauth2_token('https://auth.nuvemfiscal.com.br/oauth/token', 
                                                 $client_id,
                                                 $client_secret,
                                                 'cep cnpj');
    // Configurar access token OAuth2 para autorização: oauth2
    $config = NuvemFiscal\Configuration::getDefaultConfiguration()->setAccessToken($token->access_token);
    $apiInstance = new NuvemFiscal\Api\CepApi(
        // Se quiser usar um client http customizado, passe um client que implemente `GuzzleHttp\ClientInterface`.
        // Isso é opcional, `GuzzleHttp\Client` será usado por padrão.
        new GuzzleHttp\Client(),
        $config
    );
    $cep = '94445570'; // string | CEP sem máscara.
    try {
        $result = $apiInstance->consultarCep($cep);
        print_r($result);
    } catch (Exception $e) {
        echo 'Exception when calling CepApi->consultarCep: ', $e->getMessage(), PHP_EOL;
    }
    function get_oauth2_token($auth_url, $client_id, $client_secret, $scope) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $auth_url);
        curl_setopt($curl, CURLOPT_POST, TRUE);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query(array(        
            'grant_type' => 'client_credentials', 
            'scope' => $scope,  
        )));
        $headers[] = "Authorization: Basic " . base64_encode($client_id . ":" . $client_secret);
        $headers[] = "Content-Type: application/x-www-form-urlencoded";
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        $response = curl_exec($curl);
        $err = curl_error($curl);
        curl_close($curl);
        if ($err) {
            echo "cURL Error #:" . $err;
        } else {
            return json_decode($response);
        }
    }
?>

Está usando credenciais de produção ou sandbox?
Acho que você poderia verificar em cada passo do seu código PHP o que está sendo retornado, por exemplo, o $token->access_token.
Se conseguir, envie pra gente esse valor (via mensagem privada, já que é um token de acesso à sua conta).

Recebemos o seu token via privado. Você gerou o token usando credenciais de sandbox, portanto ele só vale para a API sandbox.

Por default o SDK acessa a API de produção. Você deve alterar o host para a API de sandbox, se quiser usar esse token:

      $config->setHost('https://api.sandbox.nuvemfiscal.com.br');

Bom dia Wagner, obrigado funcionou. Nuvem Fiscal na veia.

2 curtidas

Este tópico foi fechado automaticamente 24 horas depois da última resposta. Novas respostas não são mais permitidas.