✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

So verwenden Sie Anwendungspasswörter in WordPress für die REST-API-Authentifizierung

750

Als WordPress-Entwickler müssen Sie die REST-API in WordPress kennen. WordPress bietet eine Schnittstelle (REST API), um mit WordPress von Ihrer Anwendung aus zu interagieren. Diese Anwendungen können alles im Frontend sein, wie React, Angular oder andere PHP-Anwendungen.

Die Interaktion zwischen Ihrer Anwendung und WordPress kommuniziert über HTTP-Anfragen. Sie müssen eine HTTP-Anfrage an den WordPress-Endpunkt senden. Und um Ihre Anwendungen zu schützen, sollten alle diese Anfragen von gültigen Ressourcen stammen. Niemand sollte den WordPress-Endpunkt öffentlich anrufen. Um den API-Aufruf zu schützen, akzeptiert WordPress einen eindeutigen Token im Autorisierungsheader. WordPress validiert dieses Token und verarbeitet die Anfrage entsprechend.

WordPress 5.6 hat eine neue Funktion „Anwendungspasswörter” eingeführt. Es ermöglicht Ihnen grundsätzlich, ein Token aus dem WordPress-Dashboard zu erstellen, das dann im Autorisierungs-Header verwendet werden kann.

In diesem Artikel untersuchen wir, wie Anwendungspasswörter mit der WordPress REST API verwendet werden. Wir werden den Beispielcode für die REST-API in cURL, Guzzle und jQuery schreiben.

Anwendungspasswörter in WordPress generieren

WordPress 5.6 fügt standardmäßig den Abschnitt ‘Application Password’ unter der Benutzer->Profilseite hinzu. Diese Funktion ist für alle Sites verfügbar, die über SSL/HTTPS bereitgestellt werden. Wenn Ihre Website nicht auf HTTPS basiert, können Sie diese Funktion mithilfe des folgenden Filters aktivieren.

add_filter( 'wp_is_application_passwords_available', '__return_true' );

Gehen Sie zu der Nutzer-> Profilseite und erzeugen das Passwort durch einen Anwendungsnamen bereitstellt. WordPress erzeugt dann ein Passwort, das Sie in Ihrer Frontend-Anwendung für HTTP-Anfragen verwenden können. Obwohl WordPress Ihnen ein Passwort mit Leerzeichen gibt, können Sie dieses Passwort mit oder ohne Leerzeichen verwenden. WordPress entfernt die Leerzeichen an ihrem Ende.

Sie haben Ihr Bewerbungspasswort erhalten. Nun müssen Sie ein gültiges Token für den Autorisierungsheader generieren. Ein gültiges Token ist eine Kombination aus Ihrem WordPress-Site-Benutzernamen und dem Anwendungskennwort im base64-codierten Format. Der Benutzer kann es einfach wie folgt generieren.

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

Im obigen Code habe ich den Benutzernamen „admin” und mein eigenes Anwendungspasswort übergeben. Passen Sie diese Werte gemäß Ihren Anmeldeinformationen an. Schließlich erhalten Sie die base64-codierte Version eines gültigen Tokens. Sehen wir uns nun an, wie Sie die WordPress-REST-API mit diesem Token aufrufen.

Aufruf der WordPress-REST-API

WordPress bietet mehrere Endpunkte, die API-Anfragen von Ihrer Anwendung erhalten. Gehen Sie die Liste der verfügbaren Endpunkte in WordPress durch. Abgesehen von diesen verfügbaren Endpunkten können Sie in WordPress auch Ihre eigenen benutzerdefinierten Endpunkte hinzufügen.

Für das Tutorial nehme ich ein Beispiel für den Posts-Endpunkt zum Erstellen eines Posts. Um einen Beitrag in WordPress zu erstellen, müssen Sie POST-Anfragen mit Parametern an diesen Endpunkt senden SITE_URL/wp-json/wp/v2/posts.

Sehen wir uns nun an, wie Sie diesen Endpunkt mit cURL, Guzzle und jQuery aufrufen. Auf Grundlage Ihrer Bewerbung können Sie aus einer der unten stehenden Möglichkeiten eine Referenz entnehmen.

WordPress REST API mit PHP cURL

Sie können Ihre Anwendung in PHP erstellen. Der Benutzer kann über cURL und Guzzle von seiner PHP-Anwendung aus mit WordPress interagieren. Stellen Sie bei cURL sicher, dass die cURL-Erweiterung auf Ihrem Server aktiviert ist. Danach können Sie den folgenden Code verwenden, der den Beitrag in WordPress erstellt.

<?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();
}

Stellen Sie sicher, dass Sie die Werte von Benutzername, Anwendungskennwort und SITE_URL durch Ihre tatsächlichen Werte ersetzen. Führen Sie diesen Code aus und Ihr Beitrag wird im WordPress-Dashboard erstellt.

WordPress REST API mit Guzzle in PHP

Guzzle ist eine Alternative zu cURL. Es ist ein PHP-HTTP-Client, der das Senden von HTTP-Anfragen vereinfacht und die Integration in REST-APIs trivial macht. Installieren Sie die Guzzle-Bibliothek mit dem Befehl:

composer require guzzlehttp/guzzle

Als Nächstes sieht Ihr Code zum Erstellen eines Beitrags mit der WordPress REST API und Guzzle wie folgt aus.

<?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();
}

Hier verwende ich die base64_encode()Funktion von PHP zum Codieren des Strings. Im Fall von cURL mussten wir dies nicht explizit tun. Die cURL codiert den String selbst.

WordPress REST API mit jQuery j

Wenn es um jQuery geht, geben wir normalerweise einen API-Aufruf ab, wenn ein bestimmtes Ereignis ausgelöst wird. Dieses Ereignis kann alles wie Klicken, Ändern, Laden usw. sein. Ich schreibe über kein Ereignis. Stattdessen schreibe ich den Code direkt, den Sie in Ihre Events einpacken können.

<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>

Im obigen Code verwende ich die Methode btoa. Die btoa()Methode codiert einen String in Base-64. Sie können die API-Antwort auch in Ihrer Browserkonsole sehen.

Ich hoffe, Sie können lernen, Anwendungspasswörter in WordPress mit Ihrer Anwendung zu verwenden. Ich würde gerne Ihre Gedanken und Vorschläge im Kommentarbereich unten hören.

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen