Exemplo de autenticacao de api por token+key

Ola …
Alguem tem algum exemplo de autenticacao de api que utiliza token+ key?

Procurei e nao encontrei nenhum exemplo…
Abaixo o meu codigo, porem somente com o key…

$url = ‘https://www.meusite.com.br/todos’;
$restKey = “xxxxxxx”;

$headers = array(
“Content-Type: application/json”,
"Authorization: " . $restKey
);

$rest = curl_init();
curl_setopt($rest,CURLOPT_URL,$url);
curl_setopt($rest,CURLOPT_HTTPHEADER,$headers);
curl_setopt($rest,CURLOPT_RETURNTRANSFER, true);
curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($rest);
$response = json_decode(curl_exec($rest));
echo “

”;
print_r($response);

POST

// Definir a URL da API
$api_url = 'https://api.exemplo.com/endpoint';

// Definir os headers, incluindo Token e API Key
$headers = [
    'Authorization: Bearer SEU_TOKEN_AQUI', // Token de autenticação
    'X-API-Key: SUA_API_KEY_AQUI',          // API Key
    'Content-Type: application/json'        // Tipo de conteúdo
];

// Dados a serem enviados para a API
$data = [
    'parametro1' => 'valor1',
    'parametro2' => 'valor2'
];

// Inicializa cURL
$ch = curl_init($api_url);

// Configurações cURL
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

// Executa a requisição
$response = curl_exec($ch);

// Verifica erros na requisição
if (curl_errno($ch)) {
    echo 'Erro na requisição: ' . curl_error($ch);
} else {
    // Decodifica a resposta JSON
    $result = json_decode($response, true);
    
    // Exibe a resposta
    print_r($result);
}

// Fecha a conexão cURL
curl_close($ch);

GET

// Definir a URL da API com parâmetros de consulta (se houver)
$api_url = 'https://api.exemplo.com/endpoint?parametro1=valor1&parametro2=valor2';

// Definir os headers, incluindo Token e API Key
$headers = [
    'Authorization: Bearer SEU_TOKEN_AQUI', // Token de autenticação
    'X-API-Key: SUA_API_KEY_AQUI',          // API Key
    'Content-Type: application/json'        // Tipo de conteúdo (opcional no GET)
];

// Inicializa cURL
$ch = curl_init($api_url);

// Configurações cURL
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPGET, true); // Especifica que será uma requisição GET

// Executa a requisição
$response = curl_exec($ch);

// Verifica erros na requisição
if (curl_errno($ch)) {
    echo 'Erro na requisição: ' . curl_error($ch);
} else {
    // Decodifica a resposta JSON
    $result = json_decode($response, true);
    
    // Exibe a resposta
    print_r($result);
}

// Fecha a conexão cURL
curl_close($ch);

Muito obrigado Dev…
Me ajudou muito, fiquei horas procurando.

1 Curtida

$url = ‘https://api.exemplo.com/endpoint’;

$apitoken=‘90d3372xx1’;
// Definir os headers, incluindo Token e API Key
$headers = [
'Authorization: Basic ’ . base64_encode("$apitoken:"), // Token de autenticação
‘X-API-Key: 66e5e4xxxxx’, // API Key
‘Content-Type: application/json’ // Tipo de conteúdo (opcional no GET)
];

//‘Authorization: Basic ‘.base64_encode($api_token.’:’.$api_key)

$rest = curl_init();
curl_setopt($rest,CURLOPT_URL,$url);
curl_setopt($rest,CURLOPT_HTTPHEADER,$headers);
curl_setopt($rest,CURLOPT_RETURNTRANSFER, true);
curl_setopt($rest, CURLOPT_HTTPGET, true);
//curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($rest);
$response = json_decode(curl_exec($rest));
//var_dump($response);
//echo $response;
//print_r($response);
//curl_close($rest);

echo “

”;
print_r($response);

DEV,
Ainda esta dando erro na autenticacao… testei no postman e deu certo o token +key…
Vc consegue achar o erro no meu codigo?

Faz um tempo que não mexo com isso, mas eu lembro que no Ambiente de Desenvolvimento minhas chamadas costumavam retornar erro de autenticação, chegou a testar em Produção se apresenta o mesmo erro?
Outra alteração que tive que fazer na época também foi adicionar a linha
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Realmente, no desenvolvimento dá erro se você não tirar o SSL.

Faço assim:

Criei toda uma lógica no login para me retornar se estou no ambiente de desenvolvimento ou não. Não adianta copiar o meu if, usa ele como só exemplo, o que importa está dentro do if.

if ($ambiente === 'Desenvolvimento') {

    // Desativar a verificação do certificado SSL
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
}
1 Curtida

$headers = array('Authorization: Basic ’ . base64_encode( $apitoken . ‘:’ . $api_key ) ) ;

Consegui Rayan…
Obrigado pela ajuda…
Aproveite seu dia
Valeu