{"id":231149,"date":"2022-12-29T10:05:00","date_gmt":"2022-12-29T07:05:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231149"},"modified":"2022-12-29T10:07:15","modified_gmt":"2022-12-29T07:07:15","slug":"wysylanie-naglowkow-autoryzacyjnych-za-pomoca-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/wysylanie-naglowkow-autoryzacyjnych-za-pomoca-wordpress\/","title":{"rendered":"Wysy\u0142anie nag\u0142\u00f3wk\u00f3w autoryzacyjnych za pomoc\u0105 WordPress"},"content":{"rendered":"\n<p>Za ka\u017cdym razem, gdy wysy\u0142amy \u017c\u0105dania zdalne za pomoc\u0105 WordPressa, prawdopodobnie b\u0119dziemy u\u017cywa\u0107 jednej z nast\u0119puj\u0105cych funkcji:<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_safe_remote_post\/https:\/\/developer.wordpress.org\/reference\/functions\/wp_remote_post\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_remote_post<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_safe_remote_post\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_safe_remote_post<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_remote_get\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_remote_get<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/zdalne-zadania-za-pomoca-wp_safe_remote_get\/\" title=\"wp_safe_remote_get\">wp_safe_remote_get<\/a><\/li>\n<\/ul>\n<p>I tak, czasami b\u0119dziemy u\u017cywa\u0107 <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/roznica-w-zadaniach-curl-i-wordpress\/\" title=\"cURL\">cURL<\/a> w zale\u017cno\u015bci od charakteru projektu, ale to wykracza poza tre\u015b\u0107 tego posta.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159539-61e6f74b66e53.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159539-61e6f74b66e53.png\" alt=\"Wysy\u0142anie nag\u0142\u00f3wk\u00f3w autoryzacyjnych za pomoc\u0105 WordPress\"><\/a><\/p>\n<p>W tym artykule chc\u0119 om\u00f3wi\u0107 konkretnie tworzenie zdalnych \u017c\u0105da\u0144 i okre\u015blanie nag\u0142\u00f3wk\u00f3w w interfejsie API innej firmy.<\/p>\n<h2>Nag\u0142\u00f3wki autoryzacyjne z WordPress<\/h2>\n<p>Za ka\u017cdym razem, gdy pojawia si\u0119 asynchroniczne \u017c\u0105danie za pomoc\u0105 WordPress, proces cz\u0119sto przebiega tak:<\/p>\n<ol>\n<li>Skonfiguruj funkcj\u0119 JavaScript, aby wykona\u0107 wywo\u0142anie po stronie serwera (oczywi\u015bcie z bezpiecznym <a href=\"https:\/\/codex.wordpress.org\/WordPress_Nonces\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">numerem jednorazowym<\/a> ),<\/li>\n<li>Czy po stronie serwera wykonanie \u017c\u0105dania za pomoc\u0105 jednej z wy\u017cej wymienionych funkcji,<\/li>\n<li>Zwr\u00f3\u0107 odpowied\u017a w postaci komunikatu o <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_send_json_success\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">powodzeniu<\/a> lub <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_send_json_error\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">b\u0142\u0119dzie<\/a> ,<\/li>\n<li>Niech JavaScript po stronie klienta obs\u0142u\u017cy odpowied\u017a w spos\u00f3b, kt\u00f3ry wydaje si\u0119 pasowa\u0107 na podstawie odpowiedzi.<\/li>\n<\/ol>\n<p>Ale co, je\u015bli \u017c\u0105danie API, kt\u00f3re musisz wykona\u0107 z serwera, wymaga czego\u015b wi\u0119cej ni\u017c podstawowego punktu ko\u0144cowego z kilkoma parametrami?<\/p>\n<p>A konkretniej, co je\u015bli to, co piszesz, wymaga, aby\u015b udzieli\u0142 pewnego rodzaju upowa\u017cnienia do swojej pracy? Na szcz\u0119\u015bcie WordPress pozwala nam ustawi\u0107 nag\u0142\u00f3wki, kt\u00f3re dok\u0142adnie to rozwi\u0105zuj\u0105.<\/p>\n<p>Je\u015bli chcesz zaimplementowa\u0107 co\u015b takiego, to zak\u0142adam, \u017ce typem tre\u015bci b\u0119dzie JSON, a autoryzacja b\u0119dzie jakim\u015b rodzajem tokena (jednak twoja implementacja mo\u017ce si\u0119 r\u00f3\u017cni\u0107 w zale\u017cno\u015bci od systemu, z kt\u00f3rym korzystasz pracuj\u0105cy).<\/p>\n<p>W takim przypadku m\u00f3j token zostanie po prostu zidentyfikowany jako <strong>$token.<\/strong> A oto <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b0050a06f124f9884b22426b1bd51989\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">prosty przyk\u0142ad:<\/a><\/p>\n<pre><code>&lt;?php\n\n$response = wp_safe_remote_post(\n    $url,\n    [\n        'headers'     =&gt; [\n            'Content-Type'  =&gt; 'application\/json',\n            'Authorization' =&gt; $token\n        ],\n        'body'        =&gt; wp_json_encode($args),\n        'method'      =&gt; 'POST',\n        'data_format' =&gt; 'body',\n    ]\n);<\/code><\/pre>\n<h2>Co\u015b, na co warto zwr\u00f3ci\u0107 uwag\u0119<\/h2>\n<p>Je\u015bli Tw\u00f3j host dzia\u0142a na Apache i tego typu \u017c\u0105danie nie dzia\u0142a, prawdopodobnie b\u0119dziesz musia\u0142 zaktualizowa\u0107 <code>htaccess<\/code>plik, aby zawiera\u0142 nast\u0119puj\u0105c\u0105 regu\u0142\u0119: <code>SetEnvIf Authorization \"(.*)\" HTTP_AUTHORIZATION=$1<\/code>.<\/p>\n<p>Rekwizyty dla <a href=\"https:\/\/ggwi.cz\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">George&#8217;a<\/a> za to, \u017ce mnie z tym zwi\u0105za\u0142.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Przyk\u0142ad, jak wys\u0142a\u0107 autoryzacj\u0119 za pomoc\u0105 WordPressa, jego wbudowanych interfejs\u00f3w API i wszelkich ulepsze\u0144 serwera WWW, kt\u00f3rych mo\u017cesz potrzebowa\u0107.<\/p>\n","protected":false},"author":1,"featured_media":237098,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,919,897,845,866],"tags":[1169],"class_list":["post-231149","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-inny","category-kod","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=231149"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231149\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/237098"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=231149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=231149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=231149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}