{"id":231694,"date":"2022-12-29T10:16:00","date_gmt":"2022-12-29T07:16:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231694"},"modified":"2022-12-29T10:16:56","modified_gmt":"2022-12-29T07:16:56","slug":"envoi-den-tetes-dautorisation-avec-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/envoi-den-tetes-dautorisation-avec-wordpress\/","title":{"rendered":"Envoi d&rsquo;en-t\u00eates d&rsquo;autorisation avec WordPress"},"content":{"rendered":"<p>Chaque fois que nous ferons des requ\u00eates \u00e0 distance avec WordPress, nous utiliserons probablement l&rsquo;une des fonctions suivantes\u00a0:<\/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\/fr\/requetes-a-distance-avec-wp_safe_remote_get\/\" title=\"wp_safe_remote_get\">wp_safe_remote_get<\/a><\/li>\n<\/ul>\n<p>Et, oui, nous utiliserons parfois <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/la-difference-entre-les-requetes-curl-et-wordpress\/\" title=\"cURL\">cURL<\/a> en fonction de la nature du projet, mais cela ne fait pas partie du contenu de cet article.<\/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=\"Envoi d&#039;en-t\u00eates d&#039;autorisation avec WordPress\"><\/a><\/p>\n<p>Pour cet article, je veux parler sp\u00e9cifiquement de la cr\u00e9ation de requ\u00eates \u00e0 distance et de la sp\u00e9cification d&rsquo;en-t\u00eates par rapport \u00e0 une API tierce.<\/p>\n<h2>En-t\u00eates d&rsquo;autorisation avec WordPress<\/h2>\n<p>Chaque fois qu&rsquo;il s&rsquo;agit de faire des requ\u00eates asynchrones avec WordPress, le processus se d\u00e9roule souvent comme suit\u00a0:<\/p>\n<ol>\n<li>Configurez la fonction JavaScript pour effectuer un appel c\u00f4t\u00e9 serveur (avec un <a href=\"https:\/\/codex.wordpress.org\/WordPress_Nonces\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nonce<\/a> s\u00e9curis\u00e9, bien s\u00fbr),<\/li>\n<li>Demandez au c\u00f4t\u00e9 serveur d&rsquo;effectuer la requ\u00eate en utilisant l&rsquo;une des fonctions susmentionn\u00e9es,<\/li>\n<li>Renvoyez la r\u00e9ponse sous la forme d&rsquo;un message de <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_send_json_success\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">r\u00e9ussite<\/a> ou <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_send_json_error\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">d&rsquo;erreur ,<\/a><\/li>\n<li>Demandez au JavaScript c\u00f4t\u00e9 client de g\u00e9rer la r\u00e9ponse de la mani\u00e8re qui semble appropri\u00e9e en fonction de la r\u00e9ponse.<\/li>\n<\/ol>\n<p>Mais que se passe-t-il si la demande d&rsquo;API que vous devez effectuer depuis le serveur n\u00e9cessite quelque chose de plus qu&rsquo;un point de terminaison de base avec quelques param\u00e8tres\u00a0?<\/p>\n<p>Plus pr\u00e9cis\u00e9ment, que se passe-t-il si ce que vous \u00e9crivez n\u00e9cessite que vous fournissiez un certain type d&rsquo;autorisation pour votre travail\u00a0? Heureusement, WordPress nous permet de d\u00e9finir des en-t\u00eates qui r\u00e9solvent exactement cela.<\/p>\n<p>Si vous voulez impl\u00e9menter quelque chose comme \u00e7a, alors je vais supposer que le type de contenu sera celui de JSON et que l&rsquo;autorisation sera un type de jeton (cependant, votre impl\u00e9mentation peut varier en fonction du syst\u00e8me avec lequel vous \u00eates travail).<\/p>\n<p>Dans ce cas, mon jeton sera simplement identifi\u00e9 comme <strong>$token.<\/strong> Et voici <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b0050a06f124f9884b22426b1bd51989\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">un exemple simple :<\/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>Quelque chose \u00e0 noter<\/h2>\n<p>Si votre h\u00e9bergeur s&rsquo;ex\u00e9cute sur Apache et que ce type de requ\u00eate ne fonctionne pas, vous devrez probablement mettre \u00e0 jour votre <code>htaccess<\/code>fichier afin qu&rsquo;il inclue la r\u00e8gle suivante\u00a0: <code>SetEnvIf Authorization \"(.*)\" HTTP_AUTHORIZATION=$1<\/code>.<\/p>\n<p>Bravo \u00e0 <a href=\"https:\/\/ggwi.cz\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">George<\/a> pour m&rsquo;avoir accroch\u00e9 avec \u00e7a.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un exemple de la fa\u00e7on d&rsquo;envoyer une autorisation avec WordPress, ses API int\u00e9gr\u00e9es et tous les ajustements de serveur Web que vous pourriez avoir besoin de faire.<\/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":[915,893,717,841,862],"tags":[1167],"class_list":["post-231694","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-code-2","category-developpeur","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=231694"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231694\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/237098"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=231694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=231694"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=231694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}