{"id":25896,"date":"2021-06-15T16:05:00","date_gmt":"2021-06-15T13:05:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25896"},"modified":"2021-10-18T02:04:03","modified_gmt":"2021-10-17T23:04:03","slug":"comment-utiliser-les-mots-de-passe-d-application-dans-wordpress-pour-l-authentification-api-rest","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/comment-utiliser-les-mots-de-passe-d-application-dans-wordpress-pour-l-authentification-api-rest\/","title":{"rendered":"Comment utiliser les mots de passe d&rsquo;application dans WordPress pour l&rsquo;authentification API REST"},"content":{"rendered":"<p>En tant que d\u00e9veloppeur WordPress, vous devez conna\u00eetre l&rsquo;API REST de WordPress. WordPress fournit une interface (API REST) \u200b\u200bpour interagir avec WordPress depuis votre application. Ces applications peuvent \u00eatre n&rsquo;importe quoi sur le front-end comme React, Angular, d&rsquo;autres applications PHP.<\/p>\n<p>L&rsquo;interaction entre votre application et WordPress communique via des requ\u00eates HTTP. Vous devez envoyer une requ\u00eate HTTP au point de terminaison WordPress. Et pour prot\u00e9ger vos applications, toutes ces requ\u00eates doivent provenir de ressources valides. Personne ne devrait appeler publiquement le point de terminaison WordPress. Afin de prot\u00e9ger l&rsquo;appel d&rsquo;API, WordPress accepte un <strong>jeton unique<\/strong> dans l&rsquo;en-t\u00eate d&rsquo;autorisation. WordPress valide ce jeton et traite la demande en cons\u00e9quence.<\/p>\n<p>WordPress 5.6 a introduit une nouvelle fonctionnalit\u00e9 \u00ab\u00a0Mot de passe d&rsquo;application\u00a0\u00bb. Il vous permet essentiellement de cr\u00e9er un jeton \u00e0 partir du tableau de bord WordPress qui peut ensuite \u00eatre utilis\u00e9 dans l&rsquo;en-t\u00eate d&rsquo;autorisation.<\/p>\n<p>Dans cet article, nous \u00e9tudions comment utiliser les mots de passe d&rsquo;application avec l&rsquo;API REST WordPress. Nous \u00e9crirons l&rsquo;exemple de code pour l&rsquo;API REST dans cURL, Guzzle et jQuery.<\/p>\n<h3>G\u00e9n\u00e9rer des mots de passe d&rsquo;application dans WordPress<\/h3>\n<p>WordPress 5.6 ajoute par d\u00e9faut la section \u00ab\u00a0Mot de passe de l&rsquo;application\u00a0\u00bb sous la page <strong>Utilisateurs-&gt; Profil<\/strong>. Cette fonctionnalit\u00e9 est disponible pour tous les sites servis via SSL\/HTTPS. Si votre site n&rsquo;est pas sur HTTPS, vous pouvez activer cette fonctionnalit\u00e9 \u00e0 l&rsquo;aide du filtre ci-dessous.<\/p>\n<pre><code>add_filter( 'wp_is_application_passwords_available', '__return_true' );<\/code><\/pre>\n<p><strong>Rendez-vous<\/strong> sur la page <strong>Utilisateurs-&gt; Profil<\/strong> et g\u00e9n\u00e9rez le mot de passe en fournissant un nom d&rsquo;application. WordPress produit ensuite un mot de passe que vous pouvez utiliser dans votre application frontale pour les requ\u00eates HTTP. Bien que WordPress vous donne un mot de passe avec des espaces, vous pouvez utiliser ce mot de passe avec ou sans espaces. WordPress supprime les espaces \u00e0 leur extr\u00e9mit\u00e9.<\/p>\n<p>Vous avez votre mot de passe d&rsquo;application. Maintenant, vous devez g\u00e9n\u00e9rer un jeton valide pour l&rsquo;en-t\u00eate d&rsquo;autorisation. Un jeton valide est une combinaison du nom d&rsquo;utilisateur de votre site WordPress et du mot de passe de l&rsquo;application au format cod\u00e9 en base64. L&rsquo;utilisateur peut le g\u00e9n\u00e9rer facilement comme suit.<\/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>Dans le code ci-dessus, j&rsquo;ai transmis le nom d&rsquo;utilisateur \u00ab\u00a0admin\u00a0\u00bb et mon propre mot de passe d&rsquo;application. Ajustez ces valeurs en fonction de vos informations d&rsquo;identification. Enfin, vous obtiendrez la version encod\u00e9e en base64 d&rsquo;un jeton valide. Voyons maintenant comment appeler l&rsquo;API REST WordPress \u00e0 l&rsquo;aide de ce jeton.<\/p>\n<h3>Appel de l&rsquo;API REST WordPress<\/h3>\n<p>WordPress fournit plusieurs points de terminaison qui recevront les requ\u00eates API de votre application. Parcourez la liste des <a href=\"https:\/\/developer.wordpress.org\/rest-api\/reference\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">points de terminaison disponibles dans WordPress<\/a>. Outre ces points de terminaison disponibles, vous pouvez \u00e9galement <a href=\"https:\/\/themewp.inform.click\/fr\/comment-ajouter-des-points-de-terminaison-personnalises-a-l-api-wordpress\/\" title=\"ajouter vos propres points de terminaison personnalis\u00e9s dans WordPress\">ajouter vos propres points de terminaison personnalis\u00e9s dans WordPress<\/a>.<\/p>\n<p>Pour le tutoriel, je prends un exemple du point de terminaison Posts de cr\u00e9ation d&rsquo;un post. Pour cr\u00e9er une publication dans WordPress, vous devez envoyer des requ\u00eates POST avec des param\u00e8tres sur ce point de terminaison <code>SITE_URL\/wp-json\/wp\/v2\/posts<\/code>.<\/p>\n<p>Voyons maintenant comment appeler ce point de terminaison \u00e0 l&rsquo;aide de cURL, Guzzle et jQuery. Sur la base de votre demande, vous pouvez prendre une r\u00e9f\u00e9rence parmi l&rsquo;une des options ci-dessous.<\/p>\n<h4>API REST WordPress utilisant PHP cURL<\/h4>\n<p>Vous pouvez construire votre application en PHP. L&rsquo;utilisateur peut interagir avec WordPress depuis son application PHP en utilisant cURL et Guzzle. Dans le cas de cURL, assurez-vous que l&rsquo;extension cURL est activ\u00e9e sur votre serveur. Apr\u00e8s cela, vous pouvez utiliser le code ci-dessous qui cr\u00e9era le message dans 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>Assurez-vous de remplacer les valeurs du nom d&rsquo;utilisateur, du mot de passe de l&rsquo;application et de l&rsquo;URL_SITE par vos valeurs r\u00e9elles. Ex\u00e9cutez ce code et votre publication sera cr\u00e9\u00e9e dans le tableau de bord WordPress.<\/p>\n<h4>API REST WordPress utilisant Guzzle en PHP<\/h4>\n<p><a href=\"https:\/\/docs.guzzlephp.org\/en\/stable\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Guzzle<\/a> est une alternative \u00e0 cURL. C&rsquo;est un client PHP HTTP qui facilite l&rsquo;envoi de requ\u00eates HTTP et l&rsquo;int\u00e9gration aux API REST. Installez la biblioth\u00e8que Guzzle \u00e0 l&rsquo;aide de la commande\u00a0:<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Ensuite, votre code pour cr\u00e9er un article \u00e0 l&rsquo;aide de l&rsquo;API REST WordPress et de Guzzle sera le suivant.<\/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>Ici, j&rsquo;utilise la <code>base64_encode()<\/code>fonction de PHP pour encoder la cha\u00eene. Dans le cas de cURL, nous n&rsquo;avions pas besoin de le faire explicitement. Le cURL encode la cha\u00eene tout seul.<\/p>\n<h4>API REST WordPress utilisant jQuery<\/h4>\n<p>En ce qui concerne jQuery, nous donnons normalement un appel d&rsquo;API lorsqu&rsquo;un \u00e9v\u00e9nement sp\u00e9cifique se d\u00e9clenche. Cet \u00e9v\u00e9nement peut \u00eatre n&rsquo;importe quoi comme un clic, un changement, un chargement, etc. Je n&rsquo;\u00e9cris sur aucun \u00e9v\u00e9nement. Au lieu de cela, j&rsquo;\u00e9cris directement le code que vous pouvez encapsuler dans vos \u00e9v\u00e9nements.<\/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>Dans le code ci-dessus, j&rsquo;utilise la m\u00e9thode <code>btoa<\/code>. La <code>btoa()<\/code>m\u00e9thode encode une cha\u00eene en base-64. Vous pouvez \u00e9galement voir la r\u00e9ponse de l&rsquo;API dans la console de votre navigateur.<\/p>\n<p>J&rsquo;esp\u00e8re que vous apprendrez \u00e0 utiliser les mots de passe d&rsquo;application dans WordPress avec votre application. J&rsquo;aimerais entendre vos pens\u00e9es et suggestions dans la section des commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-ajouter-des-points-de-terminaison-personnalises-a-l-api-wordpress\/\" title=\"Comment ajouter des points de terminaison personnalis\u00e9s \u00e0 l&#039;API WordPress\">Comment ajouter des points de terminaison personnalis\u00e9s \u00e0 l&rsquo;API WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-utiliser-guzzle-un-client-http-php-pour-envoyer-des-requetes-http\/\" title=\"Comment utiliser Guzzle - Un client HTTP PHP pour envoyer des requ\u00eates HTTP\">Comment utiliser Guzzle &#8211; Un client HTTP PHP pour envoyer des requ\u00eates HTTP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/connectez-vous-avec-un-numero-de-telephone-dans-wordpress\/\" title=\"Connectez-vous avec un num\u00e9ro de t\u00e9l\u00e9phone dans WordPress\">Connectez-vous avec un num\u00e9ro de t\u00e9l\u00e9phone dans WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans cet article, nous \u00e9tudions comment utiliser les mots de passe d&rsquo;application dans WordPress pour l&rsquo;authentification API REST. Vous devez utiliser le mot de passe de l&rsquo;application<\/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":[497,608],"tags":[844],"class_list":["post-25896","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-4","category-uncategorized-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25896","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=25896"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25896\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/20206"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=25896"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=25896"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=25896"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}