{"id":26109,"date":"2021-06-20T17:41:00","date_gmt":"2021-06-20T14:41:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26109"},"modified":"2021-10-18T02:02:41","modified_gmt":"2021-10-17T23:02:41","slug":"partager-une-publication-sur-linkedin-a-l-aide-de-l-api-linkedin-et-de-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/partager-une-publication-sur-linkedin-a-l-aide-de-l-api-linkedin-et-de-php\/","title":{"rendered":"Partager une publication sur LinkedIn \u00e0 l&rsquo;aide de l&rsquo;API LinkedIn et de PHP"},"content":{"rendered":"<p>Voulez-vous savoir comment partager des publications sur LinkedIn en utilisant PHP? Dans cet article, je vous montre comment envoyer un message sur LinkedIn en utilisant l&rsquo;API LinkedIn et PHP.<\/p>\n<p>Le partage de publications sur les r\u00e9seaux sociaux vous aide \u00e0 attirer plus de trafic et d&rsquo;audience sur votre site Web. LinkedIn est un r\u00e9seau professionnel, il aurait donc de grandes chances d&rsquo;obtenir de v\u00e9ritables lecteurs.<\/p>\n<p>Si vous exploitez un site Web, publier un lien manuellement sur LinkedIn n&rsquo;est pas un choix judicieux. Il est toujours pr\u00e9f\u00e9rable d&rsquo;avoir un syst\u00e8me automatis\u00e9 qui envoie une publication sur votre flux par programmation.<\/p>\n<p>LinkedIn fournit une <a href=\"https:\/\/docs.microsoft.com\/en-us\/linkedin\/marketing\/integrations\/community-management\/shares\/share-api#post-shares\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">API de partage \u00e0 l&rsquo;<\/a> aide de laquelle vous pouvez publier un lien ainsi qu&rsquo;un titre, une description et une image sur votre flux.<\/p>\n<p>Dans ce tutoriel, nous allons parcourir toutes les \u00e9tapes n\u00e9cessaires pour partager une publication sur LinkedIn. Cela inclura des \u00e9l\u00e9ments tels que la cr\u00e9ation d&rsquo;une application LinkedIn, la g\u00e9n\u00e9ration d&rsquo;un jeton d&rsquo;acc\u00e8s, l&rsquo;obtention d&rsquo;un identifiant de profil LinkedIn et enfin l&rsquo;envoi d&rsquo;un message sur LinkedIn.<\/p>\n<h3>Cr\u00e9er une application LinkedIn<\/h3>\n<p>Pour commencer avec l&rsquo;API de partage LinkedIn, vous devez d&rsquo;abord cr\u00e9er l&rsquo;application avec votre compte LinkedIn. L&rsquo;int\u00e9gration des API LinkedIn n\u00e9cessite un identifiant client et un secret client. Vous devez \u00e9galement d\u00e9finir une URL de redirection autoris\u00e9e dans votre application.<\/p>\n<p>\u00c0 des fins de test, je vais utiliser l&rsquo;URL de mon serveur local. Vous devez ajuster cette URL en fonction de votre flux.<\/p>\n<ul>\n<li>Acc\u00e9dez au <a href=\"https:\/\/www.linkedin.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">r\u00e9seau de d\u00e9veloppeurs LinkedIn<\/a>.<\/li>\n<li>Cliquez sur le bouton \u00ab\u00a0Cr\u00e9er une application\u00a0\u00bb.<\/li>\n<li>Terminez la configuration conform\u00e9ment aux directives de LinkedIn.<\/li>\n<li>Ajoutez <a href=\"http:\/\/localhost\/linkedin\/callback.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/localhost\/linkedin\/callback.php<\/a> dans le champ URL de redirection autoris\u00e9es.<\/li>\n<li>Sous l&rsquo;onglet \u00ab\u00a0Produits\u00a0\u00bb, s\u00e9lectionnez le produit \u00ab\u00a0Se connecter avec LinkedIn\u00a0\u00bb.<\/li>\n<li>Copiez l&rsquo;ID client et les cl\u00e9s secr\u00e8tes du client.<\/li>\n<\/ul>\n<h3>G\u00e9n\u00e9rer un jeton d&rsquo;acc\u00e8s du compte LinkedIn<\/h3>\n<p>Un jeton d&rsquo;acc\u00e8s est un identifiant requis pour effectuer des op\u00e9rations d&rsquo;API sur le compte de l&rsquo;utilisateur. Le partage de publications par programme sur LinkedIn n\u00e9cessite un jeton d&rsquo;acc\u00e8s.<\/p>\n<p>Pour g\u00e9n\u00e9rer un jeton d&rsquo;acc\u00e8s, vous devez autoriser votre compte. Au cours de ce processus, nous devons envoyer des requ\u00eates HTTP au point de terminaison des API. Nous allons installer la librairie Guzzle qui nous permet d&rsquo;envoyer des requ\u00eates HTTP et de recevoir la r\u00e9ponse.<\/p>\n<p>Ex\u00e9cutez la commande ci-dessous dans le r\u00e9pertoire racine de votre projet pour installer la biblioth\u00e8que Guzzle.<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Ensuite, cr\u00e9ez un <code>config.php<\/code>fichier et transmettez les informations d&rsquo;identification dans le fichier comme indiqu\u00e9 ci-dessous.<\/p>\n<pre><code>&lt;?php\ndefine('CLIENT_ID', 'YOUR_CLIENT_ID');\ndefine('CLIENT_SECRET', 'YOUR_CLIENT_SECRET');\ndefine('REDIRECT_URL', 'http:\/\/localhost\/linkedin\/callback.php');\ndefine('SCOPES', 'r_emailaddress,r_liteprofile,w_member_social');<\/code><\/pre>\n<p>Assurez-vous de remplacer les espaces r\u00e9serv\u00e9s par des valeurs r\u00e9elles. Ici, j&rsquo;ai d\u00e9fini l&rsquo;URL de mon serveur local en tant que &lsquo;REDIRECT_URL&rsquo;. Dans votre cas, cette URL est diff\u00e9rente. \u00c0 la constante &lsquo;SCOPES&rsquo;, j&rsquo;ai pass\u00e9 les autorisations par d\u00e9faut qui sont suffisantes pour notre objectif final.<\/p>\n<h4>Cr\u00e9er une URL d&rsquo;autorisation<\/h4>\n<p>Pour obtenir votre jeton d&rsquo;acc\u00e8s, il doit cr\u00e9er une URL d&rsquo;autorisation. Cette URL n\u00e9cessite un client_id et un redirect_uri comme param\u00e8tre suppl\u00e9mentaire. L&rsquo;URL d&rsquo;autorisation vous am\u00e8ne au site Web de LinkedIn o\u00f9 vous devez terminer l&rsquo;authentification. Une fois l&rsquo;authentification termin\u00e9e, vous serez redirig\u00e9 vers l&rsquo;URL de rappel.<\/p>\n<p>Cr\u00e9ons un <code>index.php<\/code>et ajoutons le code pour l&rsquo;URL d&rsquo;autorisation comme suit.<\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\u00a0\n$url = \"https:\/\/www.linkedin.com\/oauth\/v2\/authorization?response_type=code&amp;client_id=\".CLIENT_ID.\"&amp;redirect_uri=\".REDIRECT_URL.\"&amp;scope=\".SCOPES;\n?&gt;\n\u00a0\u00a0\n&lt;a href=\"&lt;?php echo $url; ?&gt;\"&gt;Login with LinkedIn&lt;\/a&gt;<\/code><\/pre>\n<h4>Code d&rsquo;autorisation d&rsquo;\u00e9change pour un jeton d&rsquo;acc\u00e8s<\/h4>\n<p>Comme indiqu\u00e9 apr\u00e8s avoir termin\u00e9 l&rsquo;autorisation, vous serez redirig\u00e9 vers l&rsquo;URL de redirection avec le code d&rsquo;autorisation. Dans le fichier de rappel, nous devons \u00e9crire un code qui envoie une requ\u00eate POST avec les param\u00e8tres requis \u00e0 l&rsquo;API LinkedIn et re\u00e7oit un jeton d&rsquo;acc\u00e8s.<\/p>\n<p><strong>rappel.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\nrequire_once 'vendor\/autoload.php';\nuse GuzzleHttpClient;\n\u00a0\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$client = new Client(['base_uri' =&gt; 'https:\/\/www.linkedin.com']);\n\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/oauth\/v2\/accessToken', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"grant_type\" =&gt; \"authorization_code\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"code\" =&gt; $_GET['code'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"redirect_uri\" =&gt; REDIRECT_URL,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_id\" =&gt; CLIENT_ID,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_secret\" =&gt; CLIENT_SECRET,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0$data = json_decode($response-&gt;getBody()-&gt;getContents(), true);\n\u00a0\u00a0\u00a0\u00a0$access_token = $data['access_token']; \/\/ store this token somewhere\n} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>D\u00e8s r\u00e9ception du jeton d&rsquo;acc\u00e8s, enregistrez-le dans un endroit s\u00fbr. Vous pouvez le stocker dans la base de donn\u00e9es. LinkedIn ne g\u00e9n\u00e8re pas de jetons d&rsquo;acc\u00e8s de longue dur\u00e9e. Il est valable 60 jours. Vous devez r\u00e9g\u00e9n\u00e9rer un jeton d&rsquo;acc\u00e8s avant son expiration en suivant \u00e0 nouveau le processus ci-dessus. C&rsquo;est une sorte de chose moche, mais actuellement, les jetons d&rsquo;actualisation programmatiques (qui sont utilis\u00e9s pour r\u00e9g\u00e9n\u00e9rer les jetons d&rsquo;acc\u00e8s en arri\u00e8re-plan) ne sont disponibles que pour un ensemble limit\u00e9 de partenaires. Vous pouvez en savoir plus \u00e0 ce sujet sur la <a href=\"https:\/\/docs.microsoft.com\/en-us\/linkedin\/shared\/authentication\/authorization-code-flow?context=linkedin\/context#step-5-refresh-access-token\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentation LinkedIn<\/a>.<\/p>\n<h4>Obtenez votre identifiant LinkedIn en utilisant l&rsquo;API<\/h4>\n<p>Vous avez le jeton d&rsquo;acc\u00e8s de votre compte LinkedIn. La prochaine \u00e9tape consiste \u00e0 obtenir votre identifiant LinkedIn. Cet identifiant est n\u00e9cessaire pour partager une publication sur LinkedIn. Obtenez cet ID en envoyant une requ\u00eate GET au point de terminaison de l&rsquo;API LinkedIn \/v2\/me.<\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\nrequire_once 'vendor\/autoload.php';\nuse GuzzleHttpClient;\n\u00a0\u00a0\n$access_token = 'YOUR_ACCESS_TOKEN';\ntry {\n\u00a0\u00a0\u00a0\u00a0$client = new Client(['base_uri' =&gt; 'https:\/\/api.linkedin.com']);\n\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('GET', '\/v2\/me', [\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; \"Bearer \". $access_token,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0$data = json_decode($response-&gt;getBody()-&gt;getContents(), true);\n\u00a0\u00a0\u00a0\u00a0$linkedin_profile_id = $data['id']; \/\/ store this id somewhere\n} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>Comme un jeton d&rsquo;acc\u00e8s, vous devez stocker cet identifiant LinkedIn. Nous aurons besoin \u00e0 la fois du jeton d&rsquo;acc\u00e8s et de l&rsquo;identifiant LinkedIn \u00e0 l&rsquo;\u00e9tape suivante.<\/p>\n<h3>Envoyer un message sur LinkedIn \u00e0 l&rsquo;aide de l&rsquo;API LinkedIn et de PHP<\/h3>\n<p>Maintenant, notre derni\u00e8re \u00e9tape consiste \u00e0 envoyer un message sur LinkedIn. La <a href=\"https:\/\/docs.microsoft.com\/en-us\/linkedin\/marketing\/integrations\/community-management\/shares\/share-api#post-shares\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentation de l&rsquo;API Share<\/a> explique le format de demande n\u00e9cessaire. En prenant une r\u00e9f\u00e9rence, notre code PHP serait le suivant :<\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\nuse GuzzleHttpClient;\n\u00a0\u00a0\n$link = 'YOUR_LINK_TO_SHARE';\n$access_token = 'YOUR_ACCESS_TOKEN';\n$linkedin_id = 'YOUR_LINKEDIN_ID';\n$body = new stdClass();\n$body-&gt;content = new stdClass();\n$body-&gt;content-&gt;contentEntities[0] = new stdClass();\n$body-&gt;text = new stdClass();\n$body-&gt;content-&gt;contentEntities[0]-&gt;thumbnails[0] = new stdClass();\n$body-&gt;content-&gt;contentEntities[0]-&gt;entityLocation = $link;\n$body-&gt;content-&gt;contentEntities[0]-&gt;thumbnails[0]-&gt;resolvedUrl = \"THUMBNAIL_URL_TO_POST\";\n$body-&gt;content-&gt;title = 'YOUR_POST_TITLE';\n$body-&gt;owner = 'urn:li:person:'.$linkedin_id;\n$body-&gt;text-&gt;text = 'YOUR_POST_SHORT_SUMMARY';\n$body_json = json_encode($body, true);\n\u00a0\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$client = new Client(['base_uri' =&gt; 'https:\/\/api.linkedin.com']);\n\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/v2\/shares', [\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; \"Bearer \". $access_token,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Content-Type\"\u00a0 =&gt; \"application\/json\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"x-li-format\"\u00a0\u00a0 =&gt; \"json\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'body' =&gt; $body_json,\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if ($response-&gt;getStatusCode() !== 201) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo 'Error: '. $response-&gt;getLastBody()-&gt;errors[0]-&gt;message;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0echo 'Post is shared on LinkedIn successfully.';\n} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage(). ' for link '. $link;\n}<\/code><\/pre>\n<p>Dans le code ci-dessus, vous devez remplacer les espaces r\u00e9serv\u00e9s par les valeurs r\u00e9elles. Apr\u00e8s avoir appel\u00e9 le point de terminaison de l&rsquo;API \/v2\/shares, vous obtiendrez un code HTTP \u00ab\u00a0201\u00a0\u00bb. Cela signifie que la publication est cr\u00e9\u00e9e (partag\u00e9e) sur LinkedIn.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-implementer-la-connexion-avec-linkedin-dans-un-site-web-avec-php\/\" title=\"Comment impl\u00e9menter la connexion avec LinkedIn dans un site Web avec PHP\">Comment impl\u00e9menter la connexion avec LinkedIn dans un site Web avec PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/connectez-vous-avec-linkedin-dans-laravel-en-utilisant-laravel-socialite\/\" title=\"Connectez-vous avec LinkedIn dans Laravel en utilisant Laravel Socialite\">Connectez-vous avec LinkedIn dans Laravel en utilisant Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-integrer-l-api-google-sheets-avec-php\/\" title=\"Comment int\u00e9grer l&#039;API Google Sheets avec PHP\">Comment int\u00e9grer l&rsquo;API Google Sheets avec PHP<\/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>Voulez-vous partager une publication sur LinkedIn via l&rsquo;API\u00a0? Dans cet article, nous allons \u00e9crire un script PHP qui enverra une publication sur LinkedIn avec<\/p>\n","protected":false},"author":1,"featured_media":20147,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[273],"tags":[844],"class_list":["post-26109","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/26109","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=26109"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/26109\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/20147"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=26109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=26109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=26109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}