Enviando cabeçalhos de autorização com o WordPress
Sempre que estivermos fazendo solicitações remotas com o WordPress, provavelmente usaremos uma das seguintes funções:
E, sim, às vezes usaremos cURL dependendo da natureza do projeto, mas isso está fora do conteúdo deste post.
Para este artigo, quero falar especificamente sobre como fazer solicitações remotas e especificar cabeçalhos em uma API de terceiros.
Cabeçalhos de autorização com WordPress
Sempre que se trata de fazer solicitações assíncronas com o WordPress, o processo geralmente é assim:
- Configure a função JavaScript para fazer uma chamada para o lado do servidor (com um nonce seguro, é claro),
- Faça com que o lado do servidor execute a solicitação usando uma das funções acima mencionadas,
- Retornar a resposta na forma de uma mensagem de sucesso ou de erro ,
- Faça com que o JavaScript do lado do cliente lide com a resposta da maneira que parecer adequada com base na resposta.
Mas e se a solicitação de API que você precisa fazer do servidor exigir algo mais do que um endpoint básico com alguns parâmetros?
Mais especificamente, e se o que você está escrevendo exige que você forneça algum tipo de autorização para o seu trabalho? Felizmente, o WordPress nos permite definir cabeçalhos que resolvem exatamente isso.
Se você quiser implementar algo assim, vou assumir que o tipo de conteúdo será JSON e que a autorização será algum tipo de token (no entanto, sua implementação pode variar de acordo com o sistema com o qual você está trabalhando).
Nesse caso, meu token será simplesmente identificado como $token. E aqui está um exemplo simples:
<?php
$response = wp_safe_remote_post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => $token
],
'body' => wp_json_encode($args),
'method' => 'POST',
'data_format' => 'body',
]
);
Algo digno de nota
Se o seu host estiver rodando no Apache e esse tipo de solicitação não funcionar, você provavelmente precisará atualizar seu htaccessarquivo para que ele inclua a seguinte regra: SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1.
Adereços para George por me ligar com isso.
