{"id":26338,"date":"2021-06-20T17:47:00","date_gmt":"2021-06-20T14:47:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26338"},"modified":"2021-10-18T02:59:03","modified_gmt":"2021-10-17T23:59:03","slug":"condividi-post-su-linkedin-utilizzando-l-api-di-linkedin-e-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/condividi-post-su-linkedin-utilizzando-l-api-di-linkedin-e-php\/","title":{"rendered":"Condividi post su LinkedIn utilizzando l&#8217;API di LinkedIn e PHP"},"content":{"rendered":"<p>Vuoi sapere come condividere i post su LinkedIn utilizzando PHP? In questo articolo, ti mostro come inviare un post su LinkedIn utilizzando l&#8217;API di LinkedIn e PHP.<\/p>\n<p>La condivisione di post sui social network ti aiuta a portare pi\u00f9 traffico e pubblico sul tuo sito web. LinkedIn \u00e8 una rete professionale, quindi avrebbe un&#8217;alta probabilit\u00e0 di ottenere lettori autentici.<\/p>\n<p>Se stai gestendo un sito web, pubblicare un link manualmente su LinkedIn non \u00e8 una scelta saggia. \u00c8 sempre meglio avere un sistema automatizzato che invii un post sul tuo feed in modo programmatico.<\/p>\n<p>LinkedIn fornisce <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\">un&#8217;API di condivisione<\/a> tramite la quale puoi pubblicare un collegamento insieme a titolo, descrizione e immagine sul tuo feed.<\/p>\n<p>In questo tutorial, esamineremo tutti i passaggi necessari per condividere un post su LinkedIn. Ci\u00f2 includer\u00e0 cose come la creazione di un&#8217;applicazione LinkedIn, la generazione di un token di accesso, l&#8217;ottenimento di un ID profilo LinkedIn e infine l&#8217;invio di un post su LinkedIn.<\/p>\n<h3>Crea un&#8217;applicazione LinkedIn<\/h3>\n<p>Per iniziare con l&#8217;API di condivisione di LinkedIn, devi prima creare l&#8217;applicazione con il tuo account LinkedIn. L&#8217;integrazione delle API di LinkedIn richiede un ID client e un segreto client. Devi anche impostare un URL di reindirizzamento autorizzato nella tua applicazione.<\/p>\n<p>A scopo di test, utilizzer\u00f2 l&#8217;URL del mio server locale. Dovresti modificare questo URL in base al tuo flusso.<\/p>\n<ul>\n<li>Vai alla <a href=\"https:\/\/www.linkedin.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rete di sviluppatori LinkedIn<\/a>.<\/li>\n<li>Fare clic sul pulsante &quot;Crea app&quot;.<\/li>\n<li>Completa la configurazione secondo le linee guida di LinkedIn.<\/li>\n<li>Aggiungi <a href=\"http:\/\/localhost\/linkedin\/callback.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/localhost\/linkedin\/callback.php<\/a> nel campo URL di reindirizzamento autorizzato.<\/li>\n<li>Nella scheda &quot;Prodotti&quot;, seleziona il prodotto &quot;Accedi con LinkedIn&quot;.<\/li>\n<li>Copia l&#8217;ID cliente e le chiavi segrete del cliente.<\/li>\n<\/ul>\n<h3>Genera un token di accesso dell&#8217;account LinkedIn<\/h3>\n<p>Un token di accesso \u00e8 un identificatore necessario per eseguire operazioni API sull&#8217;account dell&#8217;utente. La condivisione di post in modo programmatico su LinkedIn richiede un token di accesso.<\/p>\n<p>Per generare un token di accesso, devi autorizzare il tuo account. Durante questo processo, dobbiamo inviare richieste HTTP all&#8217;endpoint delle API. Stiamo per installare la libreria Guzzle che ci permette di inviare richieste HTTP e ricevere la risposta.<\/p>\n<p>Esegui il comando seguente nella directory principale del tuo progetto per installare la libreria Guzzle.<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Quindi, crea un <code>config.php<\/code>file e passa le credenziali nel file come mostrato di seguito.<\/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>Assicurati di sostituire i segnaposto con i valori effettivi. Qui, ho impostato l&#8217;URL del mio server locale come &quot;REDIRECT_URL&quot;. Nel tuo caso, questo URL \u00e8 diverso. Alla costante &#8216;SCOPES&#8217; ho passato i permessi di default che sono sufficienti per il nostro obiettivo finale.<\/p>\n<h4>Crea un URL di autorizzazione<\/h4>\n<p>Per ottenere il token di accesso, \u00e8 necessario creare un URL di autorizzazione. Questo URL richiede un client_id e redirect_uri come parametro aggiuntivo. L&#8217;URL di autorizzazione ti porta al sito Web di LinkedIn dove devi completare l&#8217;autenticazione. Dopo aver completato l&#8217;autenticazione, verrai reindirizzato all&#8217;URL di richiamata.<\/p>\n<p>Creiamo <code>index.php<\/code>e aggiungiamo il codice per l&#8217;URL di autorizzazione come segue.<\/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>Codice di autorizzazione allo scambio per un token di accesso<\/h4>\n<p>Come detto, dopo aver completato l&#8217;autorizzazione, verrai reindirizzato all&#8217;URL di reindirizzamento insieme al codice di autorizzazione. Nel file di callback, dobbiamo scrivere un codice che invia una richiesta POST con i parametri richiesti all&#8217;API LinkedIn e riceve un token di accesso.<\/p>\n<p><strong>callback.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>Dopo aver ricevuto il token di accesso, salvarlo in un luogo sicuro. Puoi salvarlo nel database. LinkedIn non genera token di accesso di lunga durata. \u00c8 valido per 60 giorni. \u00c8 necessario rigenerare un token di accesso prima della scadenza seguendo nuovamente la procedura sopra indicata. \u00c8 una specie di cosa brutta, ma attualmente i token di aggiornamento programmatico (utilizzati per rigenerare i token di accesso in background) sono disponibili solo per un set limitato di partner. Puoi leggere di pi\u00f9 su questo nella <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\">documentazione di LinkedIn<\/a>.<\/p>\n<h4>Ottieni il tuo ID LinkedIn utilizzando l&#8217;API<\/h4>\n<p>Hai il token di accesso del tuo account LinkedIn. La parte successiva \u00e8 ottenere il tuo ID LinkedIn. Questo ID \u00e8 necessario per condividere un post su LinkedIn. Ottieni questo ID inviando una richiesta GET all&#8217;endpoint dell&#8217;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>Come un token di accesso, dovresti memorizzare questo ID LinkedIn. Richiederemo sia il token di accesso che l&#8217;ID LinkedIn nel passaggio successivo.<\/p>\n<h3>Invia post su LinkedIn utilizzando l&#8217;API di LinkedIn e PHP<\/h3>\n<p>Ora il nostro ultimo passo \u00e8 inviare un post su 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\">documentazione dell&#8217;API di condivisione<\/a> spiega il formato della richiesta necessario. Prendendo un riferimento da esso, il nostro codice PHP sarebbe il seguente:<\/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>Nel codice sopra, devi sostituire i segnaposto con i valori effettivi. Dopo aver chiamato l&#8217;endpoint API \/v2\/shares, otterrai un codice HTTP &quot;201&quot;. Significa che il post \u00e8 stato creato (condiviso) su LinkedIn.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-implementare-l-accesso-con-linkedin-nel-sito-web-con-php\/\" title=\"Come implementare l&#039;accesso con LinkedIn nel sito Web con PHP\">Come implementare l&#8217;accesso con LinkedIn nel sito Web con PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/accedi-con-linkedin-in-laravel-utilizzando-laravel-socialite\/\" title=\"Accedi con LinkedIn in Laravel utilizzando Laravel Socialite\">Accedi con LinkedIn in Laravel utilizzando Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-integrare-l-api-di-fogli-google-con-php\/\" title=\"Come integrare l&#039;API di Fogli Google con PHP\">Come integrare l&#8217;API di Fogli Google con PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vuoi condividere un post su LinkedIn tramite API? In questo articolo, scriveremo uno script PHP che invier\u00e0 un post su LinkedIn insieme a<\/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":[276],"tags":[846],"class_list":["post-26338","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-7","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/26338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=26338"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/26338\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/20147"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=26338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=26338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=26338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}