✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Cómo usar contraseñas de aplicaciones en WordPress para la autenticación de API REST

951

Como desarrollador de WordPress, debe conocer la API REST en WordPress. WordPress proporciona una interfaz (API REST) ​​para interactuar con WordPress desde su aplicación. Estas aplicaciones pueden ser cualquier cosa en la interfaz como React, Angular, otras aplicaciones PHP.

La interacción entre su aplicación y WordPress se comunica a través de solicitudes HTTP. Debe enviar una solicitud HTTP al punto final de WordPress. Y para proteger sus aplicaciones, todas estas solicitudes deben provenir de recursos válidos. Nadie debería llamar públicamente al punto final de WordPress. Para proteger la llamada a la API, WordPress acepta un token único en el encabezado de autorización. WordPress valida este token y procesa la solicitud en consecuencia.

WordPress 5.6 introdujo una nueva función ‘Contraseñas de aplicaciones’. Básicamente, le permite crear un token desde el panel de WordPress que luego se puede usar en el encabezado de autorización.

En este artículo, estudiamos cómo usar contraseñas de aplicaciones con la API REST de WordPress. Escribiremos el código de ejemplo para la API REST en cURL, Guzzle y jQuery.

Generar contraseñas de aplicaciones en WordPress

WordPress 5.6 agrega de forma predeterminada la sección ‘Contraseña de la aplicación’ en la página Usuarios-> Perfil. Esta función está disponible para todos los sitios servidos a través de SSL / HTTPS. Si su sitio no está en HTTPS, puede habilitar esta función utilizando el filtro a continuación.

add_filter( 'wp_is_application_passwords_available', '__return_true' );

Dirígete a la página Usuarios-> Perfil y genera la contraseña proporcionando un Nombre de la aplicación. WordPress luego produce una contraseña que puede usar en su aplicación frontend para solicitudes HTTP. Aunque WordPress le da una contraseña con espacios, puede usar esta contraseña con o sin espacios. WordPress elimina los espacios al final.

Obtuviste la contraseña de tu aplicación. Ahora, debe generar un token válido para el encabezado de autorización. Un token válido es una combinación del nombre de usuario de su sitio de WordPress y la contraseña de la aplicación en formato codificado en base64. El usuario puede generarlo fácilmente de la siguiente manera.

<?php
$username = 'admin'; // site username
$application_password = 'Ho9c 9vGs AOBG nXb0 FPpr W5vO';
  
echo base64_encode($username.':'.$application_password);

En el código anterior, pasé el nombre de usuario ‘admin’ y mi propia contraseña de aplicación. Ajuste estos valores según sus credenciales. Finalmente, obtendrá la versión codificada en base64 de un token válido. Ahora, veamos cómo llamar a la API REST de WordPress usando este token.

Llamar a la API REST de WordPress

WordPress ofrece varios puntos finales que recibirán solicitudes de API de su aplicación. Revise la lista de puntos finales disponibles en WordPress. Además de estos puntos finales disponibles, también puede agregar sus propios puntos finales personalizados en WordPress.

Por el bien del tutorial, tomo un ejemplo del punto final de Publicaciones para crear una publicación. Para crear una publicación en WordPress, debe enviar solicitudes POST con parámetros en este punto final SITE_URL/wp-json/wp/v2/posts.

Ahora, veamos cómo llamar a este punto final usando cURL, Guzzle y jQuery. Sobre la base de su solicitud, puede tomar una referencia de cualquiera de las opciones siguientes.

API REST de WordPress usando PHP cURL

Puede crear su aplicación en PHP. El usuario puede interactuar con WordPress desde su aplicación PHP usando cURL y Guzzle. En el caso de cURL, asegúrese de que la extensión cURL esté habilitada en su servidor. Después de esto, puede usar el siguiente código que creará la publicación en WordPress.

<?php
$username = 'admin';
$application_password = 'MGOw EG9V 04xo sUZ0 60wo J2OG';
 
$url = 'SITE_URL/wp-json/wp/v2/posts';
  
$json = json_encode([
    'title' => 'Post using REST API',
    'content' => 'Post content using REST API',
    'status' => 'publish',
]);
 
try {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_USERPWD, $username.':'.$application_password);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    $result = curl_exec($ch);
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    print_r(json_decode($result));
} catch(Exception $e) {
    echo $e->getMessage();
}

Asegúrese de reemplazar los valores de nombre de usuario, contraseña de la aplicación y SITE_URL con sus valores reales. Ejecute este código y su publicación se creará en el panel de WordPress.

API REST de WordPress usando Guzzle en PHP

Guzzle es una alternativa a cURL. Es un cliente HTTP de PHP que facilita el envío de solicitudes HTTP y simplifica la integración con las API REST. Instale la biblioteca Guzzle usando el comando:

composer require guzzlehttp/guzzle

A continuación, su código para crear una publicación utilizando la API REST de WordPress y Guzzle será el siguiente.

<?php
require_once "vendor/autoload.php";
  
use GuzzleHttpClient;
 
$username = 'admin';
$application_password = 'MGOw EG9V 04xo sUZ0 60wo J2OG';
 
try {
    $client = new Client([
        // Base URI is used with relative requests
        'base_uri' => 'SITE_URL',
    ]);
     
    $response = $client->request('POST', '/wp-json/wp/v2/posts', [
        'json' => [
            'title' => 'Post using REST API',
            'content' => 'Post content using REST API',
            'status' => 'publish',
        ],
        "headers" => [
            "Authorization" => "Basic ". base64_encode($username.':'.$application_password)
        ],
    ]);
 
    $body = $response->getBody();
    $arr_body = json_decode($body);
    print_r($arr_body);
} catch(Exception $e) {
    echo $e->getMessage();
}

Aquí, estoy usando la base64_encode()función de PHP para codificar la cadena. En el caso de cURL, no necesitamos hacerlo explícitamente. El cURL codifica la cadena por sí solo.

API REST de WordPress usando jQuery

Cuando se trata de jQuery, normalmente hacemos una llamada a la API cuando se activa un evento específico. Este evento puede ser cualquier cosa como hacer clic, cambiar, cargar, etc. No estoy escribiendo sobre ningún evento. En su lugar, escribo el código directamente que puede envolver dentro de sus eventos.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous"></script>
<script>
jQuery(function($) {
    var username = 'admin';
    var application_password = 'MGOw EG9V 04xo sUZ0 60wo J2OG';
    $.ajax({
        type: 'POST',
        url: 'SITE_URL/wp-json/wp/v2/posts',
        beforeSend: function(xhr) {
            token = btoa(username + ':' + application_password)
            xhr.setRequestHeader('Authorization', 'Basic ' + token);
        },
        data: {
            'title': 'Post using REST API',
            'content': 'Post content using REST API',
            'status': 'publish'
        },
        success:function(response) {
            console.log(response);
        }
    });
});
</script>

En el código anterior, estoy usando el método btoa. El btoa()método codifica una cadena en base 64. También puede ver la respuesta de la API en la consola de su navegador.

Espero que pueda aprender a usar contraseñas de aplicaciones en WordPress con su aplicación. Me gustaría escuchar sus pensamientos y sugerencias en la sección de comentarios a continuación.

Artículos relacionados

Fuente de grabación: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More