{"id":29453,"date":"2021-06-15T15:43:00","date_gmt":"2021-06-15T12:43:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29453"},"modified":"2021-10-18T03:32:10","modified_gmt":"2021-10-18T00:32:10","slug":"jak-uzywac-hasel-aplikacji-w-wordpress-do-uwierzytelniania-rest-api-api","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/jak-uzywac-hasel-aplikacji-w-wordpress-do-uwierzytelniania-rest-api-api\/","title":{"rendered":"Jak u\u017cywa\u0107 hase\u0142 aplikacji w WordPress do uwierzytelniania REST API API"},"content":{"rendered":"<p>Jako programista WordPress musisz zna\u0107 REST API w WordPress. WordPress zapewnia interfejs (REST API) do interakcji z WordPress z Twojej aplikacji. Te aplikacje mog\u0105 by\u0107 dowolnymi aplikacjami frontendowymi, takimi jak React, Angular, inne aplikacje PHP.<\/p>\n<p>Interakcja mi\u0119dzy Twoj\u0105 aplikacj\u0105 a WordPress komunikuje si\u0119 za po\u015brednictwem \u017c\u0105da\u0144 HTTP. Musisz wys\u0142a\u0107 \u017c\u0105danie HTTP do punktu ko\u0144cowego WordPress. Aby chroni\u0107 Twoje aplikacje, wszystkie te \u017c\u0105dania powinny pochodzi\u0107 z wa\u017cnych zasob\u00f3w. Nikt nie powinien publicznie dzwoni\u0107 do punktu ko\u0144cowego WordPress. W celu ochrony wywo\u0142ania API, WordPress akceptuje <strong>unikalny token<\/strong> w nag\u0142\u00f3wku autoryzacji. WordPress weryfikuje ten token i odpowiednio przetwarza \u017c\u0105danie.<\/p>\n<p>WordPress 5.6 wprowadzi\u0142 now\u0105 funkcj\u0119 \u201eHas\u0142a aplikacji&quot;. Zasadniczo pozwala utworzy\u0107 token z pulpitu WordPress, kt\u00f3ry nast\u0119pnie mo\u017cna wykorzysta\u0107 w nag\u0142\u00f3wku autoryzacji.<\/p>\n<p>W tym artykule dowiemy si\u0119, jak u\u017cywa\u0107 hase\u0142 aplikacji z WordPress REST API. Przyk\u0142adowy kod dla REST API napiszemy w cURL, Guzzle i jQuery.<\/p>\n<h3>Generuj has\u0142a aplikacji w WordPress<\/h3>\n<p>WordPress 5.6 domy\u015blnie dodaje sekcj\u0119 \u201eHas\u0142o aplikacji&#8221; na stronie <strong>U\u017cytkownicy-&gt;Profil<\/strong>. Ta funkcja jest dost\u0119pna dla wszystkich witryn obs\u0142ugiwanych przez SSL\/HTTPS. Je\u015bli Twoja witryna nie korzysta z protoko\u0142u HTTPS, mo\u017cesz w\u0142\u0105czy\u0107 t\u0119 funkcj\u0119 za pomoc\u0105 poni\u017cszego filtra.<\/p>\n<pre><code>add_filter( 'wp_is_application_passwords_available', '__return_true' );<\/code><\/pre>\n<p><strong>Przejd\u017a<\/strong> do strony <strong>U\u017cytkownicy-&gt;Profil<\/strong> i wygeneruj has\u0142o, podaj\u0105c Nazw\u0119 aplikacji. WordPress nast\u0119pnie tworzy has\u0142o, kt\u00f3rego mo\u017cesz u\u017cy\u0107 w swojej aplikacji frontendowej dla \u017c\u0105da\u0144 HTTP. Chocia\u017c WordPress podaje has\u0142o ze spacjami, mo\u017cesz u\u017cywa\u0107 tego has\u0142a ze spacjami lub bez. WordPress usuwa spacje na ich ko\u0144cu.<\/p>\n<p>Masz has\u0142o do aplikacji. Teraz musisz wygenerowa\u0107 wa\u017cny token dla nag\u0142\u00f3wka autoryzacji. Prawid\u0142owy token to kombinacja nazwy u\u017cytkownika witryny WordPress i has\u0142a aplikacji w formacie zakodowanym w base64. U\u017cytkownik mo\u017ce go \u0142atwo wygenerowa\u0107 w nast\u0119puj\u0105cy spos\u00f3b.<\/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>W powy\u017cszym kodzie poda\u0142em nazw\u0119 u\u017cytkownika \u201eadmin&#8221; i w\u0142asne has\u0142o aplikacji. Dostosuj te warto\u015bci zgodnie z po\u015bwiadczeniami. Na koniec otrzymasz zakodowan\u0105 w base64 wersj\u0119 prawid\u0142owego tokenu. Zobaczmy teraz, jak wywo\u0142a\u0107 WordPress REST API za pomoc\u0105 tego tokena.<\/p>\n<h3>Wywo\u0142ywanie WordPress REST API WordPress<\/h3>\n<p>WordPress udost\u0119pnia kilka punkt\u00f3w ko\u0144cowych, kt\u00f3re b\u0119d\u0105 otrzymywa\u0107 \u017c\u0105dania API z Twojej aplikacji. Przejrzyj list\u0119 <a href=\"https:\/\/developer.wordpress.org\/rest-api\/reference\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dost\u0119pnych punkt\u00f3w ko\u0144cowych w WordPressie<\/a>. Opr\u00f3cz tych dost\u0119pnych punkt\u00f3w ko\u0144cowych mo\u017cesz r\u00f3wnie\u017c <a href=\"https:\/\/themewp.inform.click\/pl\/jak-dodac-niestandardowe-punkty-koncowe-do-api-wordpress\/\" title=\"doda\u0107 w\u0142asne niestandardowe punkty ko\u0144cowe w WordPress\">doda\u0107 w\u0142asne niestandardowe punkty ko\u0144cowe w WordPress<\/a>.<\/p>\n<p>Na potrzeby samouczka podaj\u0119 przyk\u0142ad punktu ko\u0144cowego Posts tworzenia posta. Aby utworzy\u0107 post w WordPressie, musisz wys\u0142a\u0107 \u017c\u0105dania POST z parametrami na ten punkt ko\u0144cowy <code>SITE_URL\/wp-json\/wp\/v2\/posts<\/code>.<\/p>\n<p>Zobaczmy teraz, jak wywo\u0142a\u0107 ten punkt ko\u0144cowy za pomoc\u0105 cURL, Guzzle i jQuery. Na podstawie swojej aplikacji mo\u017cesz skorzysta\u0107 z referencji z dowolnej z poni\u017cszych opcji.<\/p>\n<h4>WordPress REST API przy u\u017cyciu PHP cURL<\/h4>\n<p>Mo\u017cesz zbudowa\u0107 swoj\u0105 aplikacj\u0119 w PHP. U\u017cytkownik mo\u017ce wchodzi\u0107 w interakcj\u0119 z WordPress ze swojej aplikacji PHP za pomoc\u0105 cURL i Guzzle. W przypadku cURL upewnij si\u0119, \u017ce rozszerzenie cURL jest w\u0142\u0105czone na twoim serwerze. Nast\u0119pnie mo\u017cesz u\u017cy\u0107 poni\u017cszego kodu, kt\u00f3ry utworzy post w 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>Pami\u0119taj, aby zast\u0105pi\u0107 warto\u015bci nazwy u\u017cytkownika, has\u0142a aplikacji i SITE_URL rzeczywistymi warto\u015bciami. Uruchom ten kod, a Tw\u00f3j post zostanie utworzony w panelu WordPress.<\/p>\n<h4>WordPress REST API przy u\u017cyciu Guzzle w PHP<\/h4>\n<p><a href=\"https:\/\/docs.guzzlephp.org\/en\/stable\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Guzzle<\/a> jest alternatyw\u0105 dla cURL. Jest to klient PHP HTTP, kt\u00f3ry u\u0142atwia wysy\u0142anie \u017c\u0105da\u0144 HTTP i trywialny do integracji z REST API. Zainstaluj bibliotek\u0119 Guzzle za pomoc\u0105 polecenia:<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Nast\u0119pnie Tw\u00f3j kod do tworzenia posta za pomoc\u0105 WordPress REST API i Guzzle b\u0119dzie wygl\u0105da\u0142 nast\u0119puj\u0105co.<\/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>Tutaj u\u017cywam <code>base64_encode()<\/code>funkcji PHP do kodowania ci\u0105gu. W przypadku cURL nie musieli\u015bmy tego robi\u0107 wprost. cURL sam koduje ci\u0105g.<\/p>\n<h4>WordPress REST API przy u\u017cyciu jQuery<\/h4>\n<p>Je\u015bli chodzi o jQuery, zwykle wywo\u0142ujemy API, gdy wyst\u0105pi okre\u015blone zdarzenie. Tym wydarzeniem mo\u017ce by\u0107 cokolwiek jak klikni\u0119cie, zmiana, wczytanie itp. Nie pisz\u0119 o \u017cadnym wydarzeniu. Zamiast tego pisz\u0119 kod bezpo\u015brednio, kt\u00f3ry mo\u017cesz umie\u015bci\u0107 w swoich wydarzeniach.<\/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>W powy\u017cszym kodzie u\u017cywam metody <code>btoa<\/code>. <code>btoa()<\/code>Spos\u00f3b koduje \u0142a\u0144cuch bazy-64. Mo\u017cesz r\u00f3wnie\u017c zobaczy\u0107 odpowied\u017a API w konsoli przegl\u0105darki.<\/p>\n<p>Mam nadziej\u0119, \u017ce nauczysz si\u0119 u\u017cywa\u0107 hase\u0142 aplikacji w WordPressie w swojej aplikacji. Chcia\u0142bym us\u0142ysze\u0107 wasze przemy\u015blenia i sugestie w sekcji komentarzy poni\u017cej.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-dodac-niestandardowe-punkty-koncowe-do-api-wordpress\/\" title=\"Jak doda\u0107 niestandardowe punkty ko\u0144cowe do API WordPress?\">Jak doda\u0107 niestandardowe punkty ko\u0144cowe do API WordPress?<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-korzystac-z-guzzle-klienta-php-http-do-wysylania-zadan-http\/\" title=\"Jak korzysta\u0107 z Guzzle \u2013 klienta PHP HTTP do wysy\u0142ania \u017c\u0105da\u0144 HTTP\">Jak korzysta\u0107 z Guzzle \u2013 klienta PHP HTTP do wysy\u0142ania \u017c\u0105da\u0144 HTTP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/zaloguj-sie-za-pomoca-numeru-telefonu-w-wordpress\/\" title=\"Zaloguj si\u0119 za pomoc\u0105 numeru telefonu w WordPress\">Zaloguj si\u0119 za pomoc\u0105 numeru telefonu w WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule dowiemy si\u0119, jak u\u017cywa\u0107 hase\u0142 aplikacji w WordPress do uwierzytelniania REST API. Musisz u\u017cy\u0107 has\u0142a aplikacji<\/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":[501,612],"tags":[847],"class_list":["post-29453","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","category-uncategorized-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=29453"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29453\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/20206"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=29453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=29453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=29453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}