{"id":25829,"date":"2021-06-15T15:41:00","date_gmt":"2021-06-15T12:41:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25829"},"modified":"2021-10-18T02:29:14","modified_gmt":"2021-10-17T23:29:14","slug":"so-verwenden-sie-anwendungspassworter-in-wordpress-fur-die-rest-api-authentifizierung","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/so-verwenden-sie-anwendungspassworter-in-wordpress-fur-die-rest-api-authentifizierung\/","title":{"rendered":"So verwenden Sie Anwendungspassw\u00f6rter in WordPress f\u00fcr die REST-API-Authentifizierung"},"content":{"rendered":"<p>Als WordPress-Entwickler m\u00fcssen 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\u00f6nnen alles im Frontend sein, wie React, Angular oder andere PHP-Anwendungen.<\/p>\n<p>Die Interaktion zwischen Ihrer Anwendung und WordPress kommuniziert \u00fcber HTTP-Anfragen. Sie m\u00fcssen eine HTTP-Anfrage an den WordPress-Endpunkt senden. Und um Ihre Anwendungen zu sch\u00fctzen, sollten alle diese Anfragen von g\u00fcltigen Ressourcen stammen. Niemand sollte den WordPress-Endpunkt \u00f6ffentlich anrufen. Um den API-Aufruf zu sch\u00fctzen, akzeptiert WordPress einen <strong>eindeutigen Token<\/strong> im Autorisierungsheader. WordPress validiert dieses Token und verarbeitet die Anfrage entsprechend.<\/p>\n<p>WordPress 5.6 hat eine neue Funktion \u201eAnwendungspassw\u00f6rter&#8220; eingef\u00fchrt. Es erm\u00f6glicht Ihnen grunds\u00e4tzlich, ein Token aus dem WordPress-Dashboard zu erstellen, das dann im Autorisierungs-Header verwendet werden kann.<\/p>\n<p>In diesem Artikel untersuchen wir, wie Anwendungspassw\u00f6rter mit der WordPress REST API verwendet werden. Wir werden den Beispielcode f\u00fcr die REST-API in cURL, Guzzle und jQuery schreiben.<\/p>\n<h3>Anwendungspassw\u00f6rter in WordPress generieren<\/h3>\n<p>WordPress 5.6 f\u00fcgt standardm\u00e4\u00dfig den Abschnitt &#8218;Application Password&#8216; unter der <strong>Benutzer-&gt;Profilseite hinzu<\/strong>. Diese Funktion ist f\u00fcr alle Sites verf\u00fcgbar, die \u00fcber SSL\/HTTPS bereitgestellt werden. Wenn Ihre Website nicht auf HTTPS basiert, k\u00f6nnen Sie diese Funktion mithilfe des folgenden Filters aktivieren.<\/p>\n<pre><code>add_filter( 'wp_is_application_passwords_available', '__return_true' );<\/code><\/pre>\n<p>Gehen Sie zu der <strong>Nutzer-&gt;<\/strong> Profilseite und erzeugen das Passwort durch einen Anwendungsnamen bereitstellt. WordPress erzeugt dann ein Passwort, das Sie in Ihrer Frontend-Anwendung f\u00fcr HTTP-Anfragen verwenden k\u00f6nnen. Obwohl WordPress Ihnen ein Passwort mit Leerzeichen gibt, k\u00f6nnen Sie dieses Passwort mit oder ohne Leerzeichen verwenden. WordPress entfernt die Leerzeichen an ihrem Ende.<\/p>\n<p>Sie haben Ihr Bewerbungspasswort erhalten. Nun m\u00fcssen Sie ein g\u00fcltiges Token f\u00fcr den Autorisierungsheader generieren. Ein g\u00fcltiges Token ist eine Kombination aus Ihrem WordPress-Site-Benutzernamen und dem Anwendungskennwort im base64-codierten Format. Der Benutzer kann es einfach wie folgt generieren.<\/p>\n<pre><code>&lt;?php\n$username = 'admin'; \/\/ site username\n$application_password = 'Ho9c 9vGs AOBG nXb0 FPpr W5vO';\n\u00a0\u00a0\necho base64_encode($username.':'.$application_password);<\/code><\/pre>\n<p>Im obigen Code habe ich den Benutzernamen \u201eadmin&#8220; und mein eigenes Anwendungspasswort \u00fcbergeben. Passen Sie diese Werte gem\u00e4\u00df Ihren Anmeldeinformationen an. Schlie\u00dflich erhalten Sie die base64-codierte Version eines g\u00fcltigen Tokens. Sehen wir uns nun an, wie Sie die WordPress-REST-API mit diesem Token aufrufen.<\/p>\n<h3>Aufruf der WordPress-REST-API<\/h3>\n<p>WordPress bietet mehrere Endpunkte, die API-Anfragen von Ihrer Anwendung erhalten. Gehen Sie die Liste der <a href=\"https:\/\/developer.wordpress.org\/rest-api\/reference\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">verf\u00fcgbaren Endpunkte in WordPress durch<\/a>. Abgesehen von diesen verf\u00fcgbaren Endpunkten k\u00f6nnen Sie <a href=\"https:\/\/themewp.inform.click\/de\/so-fugen-sie-benutzerdefinierte-endpunkte-zur-wordpress-api-hinzu\/\" title=\"in WordPress\">in WordPress<\/a> auch <a href=\"https:\/\/themewp.inform.click\/de\/so-fugen-sie-benutzerdefinierte-endpunkte-zur-wordpress-api-hinzu\/\" title=\"Ihre eigenen benutzerdefinierten Endpunkte hinzuf\u00fcgen\">Ihre eigenen benutzerdefinierten Endpunkte hinzuf\u00fcgen<\/a>.<\/p>\n<p>F\u00fcr das Tutorial nehme ich ein Beispiel f\u00fcr den Posts-Endpunkt zum Erstellen eines Posts. Um einen Beitrag in WordPress zu erstellen, m\u00fcssen Sie POST-Anfragen mit Parametern an diesen Endpunkt senden <code>SITE_URL\/wp-json\/wp\/v2\/posts<\/code>.<\/p>\n<p>Sehen wir uns nun an, wie Sie diesen Endpunkt mit cURL, Guzzle und jQuery aufrufen. Auf Grundlage Ihrer Bewerbung k\u00f6nnen Sie aus einer der unten stehenden M\u00f6glichkeiten eine Referenz entnehmen.<\/p>\n<h4>WordPress REST API mit PHP cURL<\/h4>\n<p>Sie k\u00f6nnen Ihre Anwendung in PHP erstellen. Der Benutzer kann \u00fcber 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\u00f6nnen Sie den folgenden Code verwenden, der den Beitrag in WordPress erstellt.<\/p>\n<pre><code>&lt;?php\n$username = 'admin';\n$application_password = 'MGOw EG9V 04xo sUZ0 60wo J2OG';\n\u00a0\n$url = 'SITE_URL\/wp-json\/wp\/v2\/posts';\n\u00a0\u00a0\n$json = json_encode([\n\u00a0\u00a0\u00a0\u00a0'title' =&gt; 'Post using REST API',\n\u00a0\u00a0\u00a0\u00a0'content' =&gt; 'Post content using REST API',\n\u00a0\u00a0\u00a0\u00a0'status' =&gt; 'publish',\n]);\n\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$ch = curl_init($url);\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_USERPWD, $username.':'.$application_password);\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application\/json']);\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_TIMEOUT, 10);\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_POST, 1);\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_POSTFIELDS, $json);\n\u00a0\u00a0\u00a0\u00a0$result = curl_exec($ch);\n\u00a0\u00a0\u00a0\u00a0$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n\u00a0\u00a0\u00a0\u00a0curl_close($ch);\n\u00a0\u00a0\u00a0\u00a0print_r(json_decode($result));\n} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>Stellen Sie sicher, dass Sie die Werte von Benutzername, Anwendungskennwort und SITE_URL durch Ihre tats\u00e4chlichen Werte ersetzen. F\u00fchren Sie diesen Code aus und Ihr Beitrag wird im WordPress-Dashboard erstellt.<\/p>\n<h4>WordPress REST API mit Guzzle in PHP<\/h4>\n<p><a href=\"https:\/\/docs.guzzlephp.org\/en\/stable\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Guzzle<\/a> 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:<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Als N\u00e4chstes sieht Ihr Code zum Erstellen eines Beitrags mit der WordPress REST API und Guzzle wie folgt aus.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\u00a0\nuse GuzzleHttpClient;\n\u00a0\n$username = 'admin';\n$application_password = 'MGOw EG9V 04xo sUZ0 60wo J2OG';\n\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$client = new Client([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Base URI is used with relative requests\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'base_uri' =&gt; 'SITE_URL',\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/wp-json\/wp\/v2\/posts', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'json' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'title' =&gt; 'Post using REST API',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'content' =&gt; 'Post content using REST API',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'status' =&gt; 'publish',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"headers\" =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Basic \". base64_encode($username.':'.$application_password)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$body = $response-&gt;getBody();\n\u00a0\u00a0\u00a0\u00a0$arr_body = json_decode($body);\n\u00a0\u00a0\u00a0\u00a0print_r($arr_body);\n} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>Hier verwende ich die <code>base64_encode()<\/code>Funktion von PHP zum Codieren des Strings. Im Fall von cURL mussten wir dies nicht explizit tun. Die cURL codiert den String selbst.<\/p>\n<h4>WordPress REST API mit jQuery j<\/h4>\n<p>Wenn es um jQuery geht, geben wir normalerweise einen API-Aufruf ab, wenn ein bestimmtes Ereignis ausgel\u00f6st wird. Dieses Ereignis kann alles wie Klicken, \u00c4ndern, Laden usw. sein. Ich schreibe \u00fcber kein Ereignis. Stattdessen schreibe ich den Code direkt, den Sie in Ihre Events einpacken k\u00f6nnen.<\/p>\n<pre><code>&lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\" integrity=\"sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx\/qtq\/1itJ0C2ejDxltZVFg==\" crossorigin=\"anonymous\"&gt;&lt;\/script&gt;\n&lt;script&gt;\njQuery(function($) {\n\u00a0\u00a0\u00a0\u00a0var username = 'admin';\n\u00a0\u00a0\u00a0\u00a0var application_password = 'MGOw EG9V 04xo sUZ0 60wo J2OG';\n\u00a0\u00a0\u00a0\u00a0$.ajax({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0type: 'POST',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0url: 'SITE_URL\/wp-json\/wp\/v2\/posts',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0beforeSend: function(xhr) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0token = btoa(username + ':' + application_password)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0xhr.setRequestHeader('Authorization', 'Basic ' + token);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0data: {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'title': 'Post using REST API',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'content': 'Post content using REST API',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'status': 'publish'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0success:function(response) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0console.log(response);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0});\n});\n&lt;\/script&gt;<\/code><\/pre>\n<p>Im obigen Code verwende ich die Methode <code>btoa<\/code>. Die <code>btoa()<\/code>Methode codiert einen String in Base-64. Sie k\u00f6nnen die API-Antwort auch in Ihrer Browserkonsole sehen.<\/p>\n<p>Ich hoffe, Sie k\u00f6nnen lernen, Anwendungspassw\u00f6rter in WordPress mit Ihrer Anwendung zu verwenden. Ich w\u00fcrde gerne Ihre Gedanken und Vorschl\u00e4ge im Kommentarbereich unten h\u00f6ren.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-fugen-sie-benutzerdefinierte-endpunkte-zur-wordpress-api-hinzu\/\" title=\"So f\u00fcgen Sie benutzerdefinierte Endpunkte zur WordPress-API hinzu\">So f\u00fcgen Sie benutzerdefinierte Endpunkte zur WordPress-API hinzu<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-verwenden-sie-guzzle-ein-php-http-client-zum-senden-von-http-anfragen\/\" title=\"So verwenden Sie Guzzle \u2013 Ein PHP-HTTP-Client zum Senden von HTTP-Anfragen\">So verwenden Sie Guzzle \u2013 Ein PHP-HTTP-Client zum Senden von HTTP-Anfragen<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/einloggen-mit-telefonnummer-in-wordpress\/\" title=\"Einloggen mit Telefonnummer in WordPress\">Einloggen mit Telefonnummer in WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Aufnahmequelle:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Artikel untersuchen wir, wie Anwendungspassw\u00f6rter in WordPress f\u00fcr die REST-API-Authentifizierung verwendet werden. Sie m\u00fcssen ein Anwendungspasswort verwenden<\/p>\n","protected":false},"author":1,"featured_media":20206,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[496,607],"tags":[845],"class_list":["post-25829","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","category-uncategorized-3","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25829","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/comments?post=25829"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25829\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/20206"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=25829"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=25829"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=25829"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}