{"id":26073,"date":"2021-06-20T18:10:00","date_gmt":"2021-06-20T15:10:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26073"},"modified":"2021-10-17T20:14:29","modified_gmt":"2021-10-17T17:14:29","slug":"jaa-viesti-linkedinissa-linkedin-api-n-ja-php-n-avulla","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/jaa-viesti-linkedinissa-linkedin-api-n-ja-php-n-avulla\/","title":{"rendered":"Jaa viesti LinkedIniss\u00e4 LinkedIn API: n ja PHP: n avulla"},"content":{"rendered":"<p>Haluatko tiet\u00e4\u00e4 kuinka jakaa viestej\u00e4 LinkedIniss\u00e4 PHP: n avulla? T\u00e4ss\u00e4 artikkelissa n\u00e4yt\u00e4n sinulle, miten l\u00e4hetet\u00e4\u00e4n viesti LinkedIniin LinkedIn API: n ja PHP: n avulla.<\/p>\n<p>Viestien jakaminen sosiaalisissa verkostoissa auttaa sinua tuomaan lis\u00e4\u00e4 liikennett\u00e4 ja yleis\u00f6j\u00e4 verkkosivustoosi. LinkedIn on ammattimainen verkosto, joten sill\u00e4 olisi suuret mahdollisuudet saada aitoja lukijoita.<\/p>\n<p>Jos sinulla on verkkosivusto, linkin l\u00e4hett\u00e4minen manuaalisesti LinkedIniin ei ole viisas valinta. On aina parempi olla automaattinen j\u00e4rjestelm\u00e4, joka l\u00e4hett\u00e4\u00e4 viestin sy\u00f6tteesi ohjelmallisesti.<\/p>\n<p>LinkedIn tarjoaa <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\">Share API: n,<\/a> jonka avulla voit l\u00e4hett\u00e4\u00e4 linkin otsikon, kuvauksen ja kuvan kanssa sy\u00f6tteeseesi.<\/p>\n<p>T\u00e4ss\u00e4 opetusohjelmassa k\u00e4yd\u00e4\u00e4n l\u00e4pi kaikki vaiheet, joita tarvitaan viestin jakamiseen LinkedIniss\u00e4. T\u00e4h\u00e4n sis\u00e4ltyy muun muassa LinkedIn-sovelluksen luominen, k\u00e4ytt\u00f6oikeustunnuksen luominen, LinkedIn-profiilin tunnuksen hankkiminen ja lopuksi viestin l\u00e4hett\u00e4minen LinkedIniin.<\/p>\n<h3>Luo LinkedIn-sovellus<\/h3>\n<p>Aloittaaksesi LinkedIn share API: lla sinun on ensin luotava sovellus LinkedIn-tilill\u00e4si. LinkedIn-sovellusliittymien integrointi vaatii asiakastunnuksen ja asiakassalaisuuden. Sinun on my\u00f6s m\u00e4\u00e4ritett\u00e4v\u00e4 valtuutettu uudelleenohjauksen URL-osoite sovelluksessasi.<\/p>\n<p>Testaustarkoituksiin aion k\u00e4ytt\u00e4\u00e4 paikallisen palvelimen URL-osoitetta. Sinun tulisi s\u00e4\u00e4t\u00e4\u00e4 t\u00e4m\u00e4 URL-osoite virtauksesi mukaan.<\/p>\n<ul>\n<li>Siirry <a href=\"https:\/\/www.linkedin.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">LinkedIn-kehitt\u00e4j\u00e4verkostoon<\/a>.<\/li>\n<li>Napsauta Luo sovellus -painiketta.<\/li>\n<li>Suorita asennus LinkedIn-ohjeiden mukaisesti.<\/li>\n<li>Lis\u00e4\u00e4 <a href=\"http:\/\/localhost\/linkedin\/callback.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http: \/\/localhost\/linkedin\/callback.php<\/a> Valtuutetut uudelleenohjaus-URL-osoitteet -kentt\u00e4\u00e4n.<\/li>\n<li>Valitse Tuotteet-v\u00e4lilehdest\u00e4 Tuote Kirjaudu sis\u00e4\u00e4n LinkedInill\u00e4.<\/li>\n<li>Kopioi asiakastunnus ja asiakassalaisuudet.<\/li>\n<\/ul>\n<h3>Luo LinkedIn-tilin k\u00e4ytt\u00f6oikeustunnus<\/h3>\n<p>K\u00e4ytt\u00f6oikeustunnus on tunniste, jota tarvitaan API-operaatioiden suorittamiseen k\u00e4ytt\u00e4j\u00e4n tilill\u00e4. Viestien jakaminen ohjelmallisesti LinkedIniss\u00e4 vaatii k\u00e4ytt\u00f6oikeustunnuksen.<\/p>\n<p>Jotta voit luoda k\u00e4ytt\u00f6oikeustunnuksen, sinun on valtuutettava tilisi. T\u00e4m\u00e4n prosessin aikana meid\u00e4n on l\u00e4hetett\u00e4v\u00e4 HTTP-pyynn\u00f6t API-p\u00e4\u00e4tepisteelle. Aiomme asentaa Guzzle-kirjaston, jonka avulla voimme l\u00e4hett\u00e4\u00e4 HTTP-pyynt\u00f6j\u00e4 ja vastaanottaa vastauksen.<\/p>\n<p>Asenna Guzzle-kirjasto suorittamalla alla oleva komento projektin juurihakemistossa.<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Luo sitten <code>config.php<\/code>tiedosto ja v\u00e4lit\u00e4 tiedostossa olevat tunnistetiedot alla esitetyll\u00e4 tavalla.<\/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>Muista korvata paikkamerkit todellisilla arvoilla. T\u00e4ss\u00e4 m\u00e4\u00e4ritin paikallisen palvelimen URL-osoitteeksi REDIRECT_URL. Sinun URL-osoitteesi on erilainen. &#8217;SCOPES&#8217; -vakioon olen siirt\u00e4nyt oletusoikeudet, jotka ovat riitt\u00e4vi\u00e4 lopulliseen tavoitteeseemme.<\/p>\n<h4>Luo valtuutus-URL<\/h4>\n<p>Saadakseen k\u00e4ytt\u00f6oikeustunnuksesi sen on rakennettava valtuutus-URL. T\u00e4m\u00e4 URL-osoite vaatii client_id ja redirect_uri lis\u00e4parametrina. Valtuutus-URL vie sinut LinkedIn-verkkosivustolle, jossa sinun on suoritettava todennus. Kun todennus on suoritettu, sinut ohjataan takaisin takaisinsoitto-URL-osoitteeseen.<\/p>\n<p>Luodaan <code>index.php<\/code>ja lis\u00e4t\u00e4\u00e4n valtuutus-URL-koodi seuraavasti.<\/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>Vaihda k\u00e4ytt\u00f6oikeustunnuksen valtuutuskoodi<\/h4>\n<p>Kuten totesi valtuutuksen suorittamisen j\u00e4lkeen, ohjaat takaisin uudelleenohjaus-URL-osoitteeseen valtuutuskoodin kanssa. Soittotiedostoon on kirjoitettava koodi, joka l\u00e4hett\u00e4\u00e4 vaadittujen parametrien sis\u00e4lt\u00e4v\u00e4n POST-pyynn\u00f6n LinkedIn-sovellusliittym\u00e4\u00e4n ja vastaanottaa k\u00e4ytt\u00f6oikeustunnuksen.<\/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>Saatuasi k\u00e4ytt\u00f6oikeustunnuksen tallenna se turvalliseen paikkaan. Voit tallentaa sen tietokantaan. LinkedIn ei luo pitk\u00e4ik\u00e4isi\u00e4 k\u00e4ytt\u00f6oikeustunnuksia. Se on voimassa 60 p\u00e4iv\u00e4\u00e4. Sinun on luotava k\u00e4ytt\u00f6oikeustunnus ennen vanhentumista seuraamalla yll\u00e4 olevaa prosessia uudelleen. Se on er\u00e4\u00e4nlainen ruma asia, mutta t\u00e4ll\u00e4 hetkell\u00e4 ohjelmalliset p\u00e4ivitystunnukset (joita k\u00e4ytet\u00e4\u00e4n p\u00e4\u00e4sykoodien luomiseen taustalla) ovat k\u00e4ytett\u00e4viss\u00e4 vain rajoitetulle joukolle kumppaneita. Voit lukea lis\u00e4\u00e4 t\u00e4st\u00e4 <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\">LinkedIn-dokumentaatiosta<\/a>.<\/p>\n<h4>Hanki LinkedIn-tunnuksesi API: n avulla<\/h4>\n<p>Sinulla on LinkedIn-tilisi k\u00e4ytt\u00f6oikeustunnus. Seuraava osa on saada LinkedIn-tunnuksesi. T\u00e4t\u00e4 tunnusta tarvitaan jakamaan viesti LinkedIniss\u00e4. Hanki t\u00e4m\u00e4 tunnus l\u00e4hett\u00e4m\u00e4ll\u00e4 GET-pyynt\u00f6 LinkedIn API -p\u00e4\u00e4tepisteelle \/ 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>Kuten k\u00e4ytt\u00f6oikeustunnus, sinun tulisi tallentaa t\u00e4m\u00e4 LinkedIn-tunnus. Tarvitsemme sek\u00e4 k\u00e4ytt\u00f6oikeustunnuksen ett\u00e4 LinkedIn ID: n seuraavassa vaiheessa.<\/p>\n<h3>L\u00e4het\u00e4 viesti LinkedIniin LinkedIn API: n ja PHP: n avulla<\/h3>\n<p>Viimeinen vaihe on l\u00e4hett\u00e4\u00e4 viesti LinkedIniin. <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\">Jaa API dokumentaatio<\/a> kertoo pyynn\u00f6n muodossa tarvitaan. Ottaen siit\u00e4 viitteen PHP-koodimme olisi seuraava:<\/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>Yll\u00e4 olevassa koodissa sinun on korvattava paikkamerkit todellisilla arvoilla. Kun olet soittanut API-p\u00e4\u00e4tepisteelle \/ v2 \/ jako, saat &#8217;201&#8217; HTTP-koodin. Se tarkoittaa, ett\u00e4 viesti on luotu (jaettu) LinkedIniss\u00e4.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-toteuttaa-sisaankirjautuminen-linkedinin-avulla-verkkosivustolla-php-lla\/\" title=\"Kuinka toteuttaa sis\u00e4\u00e4nkirjautuminen LinkedInin avulla verkkosivustolla PHP: ll\u00e4\">Kuinka toteuttaa sis\u00e4\u00e4nkirjautuminen LinkedInin avulla verkkosivustolla PHP: ll\u00e4<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kirjaudu-sisaan-linkedinilla-laravelissa-laravel-socialiten-avulla\/\" title=\"Kirjaudu sis\u00e4\u00e4n LinkedInill\u00e4 Laravelissa Laravel Socialiten avulla\">Kirjaudu sis\u00e4\u00e4n LinkedInill\u00e4 Laravelissa Laravel Socialiten avulla<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-integroida-google-sheets-sovellusliittyma-php-hen\/\" title=\"Kuinka integroida Google Sheets -sovellusliittym\u00e4 PHP: hen\">Kuinka integroida Google Sheets -sovellusliittym\u00e4 PHP: hen<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Haluatko jakaa viestin LinkedIniss\u00e4 API: n kautta? T\u00e4ss\u00e4 artikkelissa kirjoitamme PHP-komentosarjan, joka l\u00e4hett\u00e4\u00e4 viestin LinkedIniin yhdess\u00e4<\/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":[275],"tags":[843],"class_list":["post-26073","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/26073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=26073"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/26073\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20147"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=26073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=26073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=26073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}