{"id":29585,"date":"2021-06-15T15:49:00","date_gmt":"2021-06-15T12:49:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29585"},"modified":"2021-10-17T04:15:09","modified_gmt":"2021-10-17T01:15:09","slug":"hur-man-anvander-applikationslosenord-i-wordpress-for-rest-api-autentisering","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/hur-man-anvander-applikationslosenord-i-wordpress-for-rest-api-autentisering\/","title":{"rendered":"Hur man anv\u00e4nder applikationsl\u00f6senord i WordPress f\u00f6r REST API-autentisering"},"content":{"rendered":"<p>Som WordPress-utvecklare m\u00e5ste du vara medveten om REST API i WordPress. WordPress tillhandah\u00e5ller ett gr\u00e4nssnitt (REST API) f\u00f6r att interagera med WordPress fr\u00e5n din applikation. Dessa applikationer kan vara vad som helst p\u00e5 frontend som React, Angular, andra PHP-applikationer.<\/p>\n<p>Interaktionen mellan din applikation och WordPress kommunicerar via HTTP-f\u00f6rfr\u00e5gningar. Du m\u00e5ste skicka en HTTP-beg\u00e4ran till WordPress-slutpunkten. Och f\u00f6r att skydda dina applikationer b\u00f6r alla dessa f\u00f6rfr\u00e5gningar komma fr\u00e5n giltiga resurser. Ingen ska offentligt ringa WordPress-slutpunkten. F\u00f6r att skydda API-samtalet accepterar WordPress en <strong>unik token<\/strong> i auktoriseringshuvudet. WordPress validerar denna token och behandlar beg\u00e4ran d\u00e4refter.<\/p>\n<p>WordPress 5.6 introducerade en ny funktion &#8217;Application Passwords&#8217;. Det l\u00e5ter dig i princip skapa en token fr\u00e5n WordPress-instrumentpanelen som sedan kan anv\u00e4ndas i auktoriseringshuvudet.<\/p>\n<p>I den h\u00e4r artikeln studerar vi hur man anv\u00e4nder applikationsl\u00f6senord med WordPress REST API. Vi skriver exempelkoden f\u00f6r REST API i cURL, Guzzle och jQuery.<\/p>\n<h3>Skapa applikationsl\u00f6senord i WordPress<\/h3>\n<p>WordPress 5.6 l\u00e4gger till som standard avsnittet &quot;Applikationsl\u00f6senord&quot; under <strong>sidan Anv\u00e4ndare-&gt; Profil<\/strong>. Denna funktion \u00e4r tillg\u00e4nglig f\u00f6r alla webbplatser som serveras via SSL \/ HTTPS. Om din webbplats inte finns p\u00e5 HTTPS kan du aktivera den h\u00e4r funktionen med filtret nedan.<\/p>\n<pre><code>add_filter( 'wp_is_application_passwords_available', '__return_true' );<\/code><\/pre>\n<p><strong>G\u00e5<\/strong> till <strong>Anv\u00e4ndars-&gt; Profilsidan<\/strong> och skapa l\u00f6senordet genom att ange ett applikationsnamn. WordPress producerar sedan ett l\u00f6senord som du kan anv\u00e4nda i din frontend-applikation f\u00f6r HTTP-f\u00f6rfr\u00e5gningar. \u00c4ven om WordPress ger dig ett l\u00f6senord med mellanslag kan du anv\u00e4nda det h\u00e4r l\u00f6senordet med eller utan mellanslag. WordPress tar bort utrymmena i slutet.<\/p>\n<p>Du har ditt applikationsl\u00f6senord. Nu m\u00e5ste du skapa en giltig token f\u00f6r beh\u00f6righetshuvudet. En giltig token \u00e4r en kombination av ditt WordPress-anv\u00e4ndarnamn och applikationsl\u00f6senord i baskodat format. Anv\u00e4ndaren kan generera det enkelt enligt f\u00f6ljande.<\/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>I ovanst\u00e5ende kod skickade jag anv\u00e4ndarnamnet &#8217;admin&#8217; och mitt eget applikationsl\u00f6senord. Justera dessa v\u00e4rden enligt dina referenser. Slutligen f\u00e5r du bas64-kodad version av en giltig token. L\u00e5t oss nu se hur man anropar WordPress REST API med den h\u00e4r token.<\/p>\n<h3>Ringer till WordPress REST API<\/h3>\n<p>WordPress ger flera slutpunkter som tar emot API-f\u00f6rfr\u00e5gningar fr\u00e5n din applikation. G\u00e5 igenom listan \u00f6ver <a href=\"https:\/\/developer.wordpress.org\/rest-api\/reference\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tillg\u00e4ngliga slutpunkter i WordPress<\/a>. F\u00f6rutom dessa tillg\u00e4ngliga slutpunkter kan du ocks\u00e5 <a href=\"https:\/\/themewp.inform.click\/sv\/sa-har-lagger-du-till-anpassade-slutpunkter-till-wordpress-api\/\" title=\"l\u00e4gga till dina egna anpassade slutpunkter i WordPress\">l\u00e4gga till dina egna anpassade slutpunkter i WordPress<\/a>.<\/p>\n<p>F\u00f6r handledningens skull tar jag ett exempel p\u00e5 Posts slutpunkt f\u00f6r att skapa ett inl\u00e4gg. F\u00f6r att skapa ett inl\u00e4gg i WordPress m\u00e5ste du skicka POST-f\u00f6rfr\u00e5gningar med parametrar p\u00e5 denna slutpunkt <code>SITE_URL\/wp-json\/wp\/v2\/posts<\/code>.<\/p>\n<p>L\u00e5t oss nu se hur man kallar den h\u00e4r slutpunkten med cURL, Guzzle och jQuery. P\u00e5 grundval av din ans\u00f6kan kan du ta en referens fr\u00e5n n\u00e5got av alternativen nedan.<\/p>\n<h4>WordPress REST API med PHP cURL<\/h4>\n<p>Du kan bygga din applikation i PHP. Anv\u00e4ndaren kan interagera med WordPress fr\u00e5n sin PHP-applikation med cURL och Guzzle. N\u00e4r det g\u00e4ller cURL, se till att cURL-till\u00e4gget \u00e4r aktiverat p\u00e5 din server. Efter detta kan du anv\u00e4nda nedanst\u00e5ende kod som skapar inl\u00e4gget i WordPress.<\/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>Se till att du ers\u00e4tter v\u00e4rdena f\u00f6r anv\u00e4ndarnamn, applikationsl\u00f6senord och SITE_URL med dina faktiska v\u00e4rden. K\u00f6r den h\u00e4r koden s\u00e5 skapas ditt inl\u00e4gg i WordPress-instrumentpanelen.<\/p>\n<h4>WordPress REST API med Guzzle i PHP<\/h4>\n<p><a href=\"https:\/\/docs.guzzlephp.org\/en\/stable\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Guzzle<\/a> \u00e4r ett alternativ till cURL. Det \u00e4r en PHP HTTP-klient som g\u00f6r det enkelt att skicka HTTP-f\u00f6rfr\u00e5gningar och trivialt att integrera med REST API: er. Installera Guzzle-biblioteket med kommandot:<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>D\u00e4refter kommer din kod f\u00f6r att skapa ett inl\u00e4gg med WordPress REST API och Guzzle att vara som f\u00f6ljer.<\/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>H\u00e4r anv\u00e4nder jag <code>base64_encode()<\/code>funktionen f\u00f6r PHP f\u00f6r kodning av str\u00e4ngen. N\u00e4r det g\u00e4ller cURL beh\u00f6vde vi inte g\u00f6ra det uttryckligen. CURL kodar str\u00e4ngen p\u00e5 egen hand.<\/p>\n<h4>WordPress REST API med jQuery<\/h4>\n<p>N\u00e4r det g\u00e4ller jQuery ger vi normalt ett API-samtal n\u00e4r en viss h\u00e4ndelse utl\u00f6ses. Denna h\u00e4ndelse kan vara n\u00e5got som att klicka, \u00e4ndra, ladda osv. Jag skriver inte om n\u00e5gon h\u00e4ndelse. Ist\u00e4llet skriver jag koden direkt som du kan packa upp i dina evenemang.<\/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>I ovanst\u00e5ende kod anv\u00e4nder jag metoden <code>btoa<\/code>. Den <code>btoa()<\/code>metod kodar en str\u00e4ng i bas-64. Du kan ocks\u00e5 se API-svaret i din webbl\u00e4sarkonsol.<\/p>\n<p>Jag hoppas att du kan l\u00e4ra dig att anv\u00e4nda applikationsl\u00f6senord i WordPress med din applikation. Jag skulle vilja h\u00f6ra dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/sa-har-lagger-du-till-anpassade-slutpunkter-till-wordpress-api\/\" title=\"S\u00e5 h\u00e4r l\u00e4gger du till anpassade slutpunkter till WordPress API\">S\u00e5 h\u00e4r l\u00e4gger du till anpassade slutpunkter till WordPress API<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-anvander-guzzle-en-php-http-klient-for-att-skicka-http-forfragningar\/\" title=\"Hur man anv\u00e4nder Guzzle - En PHP HTTP-klient f\u00f6r att skicka HTTP-f\u00f6rfr\u00e5gningar\">Hur man anv\u00e4nder Guzzle &#8211; En PHP HTTP-klient f\u00f6r att skicka HTTP-f\u00f6rfr\u00e5gningar<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/logga-in-med-telefonnummer-pa-wordpress\/\" title=\"Logga in med telefonnummer p\u00e5 WordPress\">Logga in med telefonnummer p\u00e5 WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I den h\u00e4r artikeln studerar vi hur man anv\u00e4nder applikationsl\u00f6senord i WordPress f\u00f6r REST API-autentisering. Du m\u00e5ste anv\u00e4nda applikationsl\u00f6senordet<\/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":[503,614],"tags":[850],"class_list":["post-29585","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-10","category-uncategorized-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=29585"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29585\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/20206"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=29585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=29585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=29585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}