{"id":26304,"date":"2021-06-20T18:31:00","date_gmt":"2021-06-20T15:31:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26304"},"modified":"2021-10-18T02:27:49","modified_gmt":"2021-10-17T23:27:49","slug":"beitrag-auf-linkedin-teilen-mit-linkedin-api-und-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/beitrag-auf-linkedin-teilen-mit-linkedin-api-und-php\/","title":{"rendered":"Beitrag auf LinkedIn teilen mit LinkedIn API und PHP"},"content":{"rendered":"<p>M\u00f6chten Sie wissen, wie Sie mit PHP Beitr\u00e4ge auf LinkedIn teilen? In diesem Artikel zeige ich Ihnen, wie Sie mit LinkedIn API und PHP einen Beitrag auf LinkedIn senden.<\/p>\n<p>Das Teilen von Beitr\u00e4gen in sozialen Netzwerken hilft Ihnen, mehr Verkehr und Publikum auf Ihre Website zu bringen. LinkedIn ist ein professionelles Netzwerk, daher h\u00e4tte es eine hohe Chance, echte Leser zu gewinnen.<\/p>\n<p>Wenn Sie eine Website betreiben, ist es keine kluge Wahl, einen Link manuell auf LinkedIn zu ver\u00f6ffentlichen. Es ist immer besser, ein automatisiertes System zu haben, das programmgesteuert einen Beitrag an Ihren Feed sendet.<\/p>\n<p>LinkedIn bietet eine <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,<\/a> mit der Sie einen Link zusammen mit Titel, Beschreibung und Bild in Ihrem Feed posten k\u00f6nnen.<\/p>\n<p>In diesem Tutorial werden wir alle Schritte durchgehen, die zum Teilen eines Beitrags auf LinkedIn erforderlich sind. Dazu geh\u00f6ren Dinge wie das Erstellen einer LinkedIn-Anwendung, das Generieren eines Zugriffstokens, das Abrufen einer LinkedIn-Profil-ID und das Senden eines Beitrags auf LinkedIn.<\/p>\n<h3>LinkedIn-Anwendung erstellen<\/h3>\n<p>Um mit der LinkedIn Share API zu beginnen, m\u00fcssen Sie zun\u00e4chst die Anwendung mit Ihrem LinkedIn-Konto erstellen. F\u00fcr die Integration von LinkedIn APIs sind eine Client-ID und ein Client-Geheimnis erforderlich. Au\u00dferdem m\u00fcssen Sie in Ihrer Anwendung eine autorisierte Weiterleitungs-URL festlegen.<\/p>\n<p>Zu Testzwecken verwende ich meine lokale Server-URL. Sie sollten diese URL gem\u00e4\u00df Ihrem Schema anpassen.<\/p>\n<ul>\n<li>Gehen Sie zum <a href=\"https:\/\/www.linkedin.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">LinkedIn-Entwicklernetzwerk<\/a>.<\/li>\n<li>Klicken Sie auf die Schaltfl\u00e4che \u201eApp erstellen&#8220;.<\/li>\n<li>Schlie\u00dfen Sie die Einrichtung gem\u00e4\u00df den LinkedIn-Richtlinien ab.<\/li>\n<li>F\u00fcgen Sie <a href=\"http:\/\/localhost\/linkedin\/callback.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/localhost\/linkedin\/callback.php<\/a> in das Feld Autorisierte Weiterleitungs-URLs ein.<\/li>\n<li>W\u00e4hlen Sie auf der Registerkarte \u201eProdukte&#8220; das Produkt \u201eMit LinkedIn anmelden&#8220; aus.<\/li>\n<li>Kopieren Sie die Client-ID und den geheimen Clientschl\u00fcssel.<\/li>\n<\/ul>\n<h3>Generieren Sie ein Zugriffstoken f\u00fcr ein LinkedIn-Konto<\/h3>\n<p>Ein Zugriffstoken ist eine Kennung, die erforderlich ist, um API-Vorg\u00e4nge f\u00fcr das Benutzerkonto auszuf\u00fchren. Das programmgesteuerte Teilen von Beitr\u00e4gen auf LinkedIn erfordert ein Zugriffstoken.<\/p>\n<p>Um ein Zugriffstoken zu generieren, m\u00fcssen Sie Ihr Konto autorisieren. W\u00e4hrend dieses Vorgangs m\u00fcssen wir HTTP-Anfragen an den APIs-Endpunkt senden. Wir werden die Guzzle-Bibliothek installieren, die es uns erm\u00f6glicht, HTTP-Anfragen zu senden und die Antwort zu empfangen.<\/p>\n<p>F\u00fchren Sie den folgenden Befehl in Ihrem Projektstammverzeichnis aus, um die Guzzle-Bibliothek zu installieren.<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Erstellen Sie als N\u00e4chstes eine <code>config.php<\/code>Datei und \u00fcbergeben Sie die Anmeldeinformationen in der Datei wie unten gezeigt.<\/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>Stellen Sie sicher, dass Sie Platzhalter durch tats\u00e4chliche Werte ersetzen. Hier setze ich meine lokale Server-URL als &#8218;REDIRECT_URL&#8216;. In Ihrem Fall ist diese URL anders. An die Konstante &#8218;SCOPES&#8216; habe ich die Standardberechtigungen \u00fcbergeben, die f\u00fcr unser Endziel ausreichend sind.<\/p>\n<h4>Erstellen Sie eine Autorisierungs-URL<\/h4>\n<p>Um Ihr Zugriffstoken zu erhalten, muss eine Autorisierungs-URL erstellt werden. Diese URL erfordert eine client_id und eine redirect_uri als zus\u00e4tzlichen Parameter. Die Autorisierungs-URL f\u00fchrt Sie auf die LinkedIn-Website, auf der Sie die Authentifizierung durchf\u00fchren m\u00fcssen. Nach Abschluss der Authentifizierung werden Sie zur R\u00fcckruf-URL zur\u00fcckgeleitet.<\/p>\n<p>Erstellen wir eine <code>index.php<\/code>und f\u00fcgen Sie den Code f\u00fcr die Autorisierungs-URL wie folgt hinzu.<\/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>Autorisierungscode f\u00fcr ein Zugriffstoken austauschen<\/h4>\n<p>Wie bereits erw\u00e4hnt, werden Sie nach Abschluss der Autorisierung zusammen mit dem Autorisierungscode zur Weiterleitungs-URL zur\u00fcckgeleitet. In die Callback-Datei m\u00fcssen wir einen Code schreiben, der eine POST-Anfrage mit erforderlichen Parametern an die LinkedIn-API sendet und ein Zugriffstoken erh\u00e4lt.<\/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>Bewahren Sie das Zugriffstoken nach Erhalt an einem sicheren Ort auf. Sie k\u00f6nnen es in der Datenbank speichern. LinkedIn generiert keine langlebigen Zugriffstoken. Es ist 60 Tage g\u00fcltig. Sie m\u00fcssen ein Zugriffstoken vor Ablauf neu generieren, indem Sie den obigen Vorgang erneut ausf\u00fchren. Es ist eine h\u00e4ssliche Sache, aber derzeit sind programmatische Aktualisierungstoken (die zum Regenerieren von Zugriffstoken im Hintergrund verwendet werden) nur f\u00fcr eine begrenzte Anzahl von Partnern verf\u00fcgbar. Weitere Informationen hierzu finden Sie in der <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-Dokumentation<\/a>.<\/p>\n<h4>Holen Sie sich Ihre LinkedIn-ID mit API<\/h4>\n<p>Sie haben das Zugriffstoken Ihres LinkedIn-Kontos erhalten. Der n\u00e4chste Teil besteht darin, Ihre LinkedIn-ID zu erhalten. Diese ID wird ben\u00f6tigt, um einen Beitrag auf LinkedIn zu teilen. Rufen Sie diese ID ab, indem Sie eine GET-Anfrage an den LinkedIn API-Endpunkt \/v2\/me senden.<\/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>Diese LinkedIn-ID sollten Sie wie ein Zugriffstoken speichern. Im n\u00e4chsten Schritt ben\u00f6tigen wir sowohl das Zugriffstoken als auch die LinkedIn-ID.<\/p>\n<h3>Post auf LinkedIn senden mit LinkedIn API und PHP<\/h3>\n<p>Jetzt ist unser letzter Schritt, einen Beitrag auf LinkedIn zu senden. In der <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-Dokumentation wird<\/a> das erforderliche <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\">Anfrageformat<\/a> erl\u00e4utert. Ausgehend von einer Referenz w\u00e4re unser PHP-Code wie folgt:<\/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>Im obigen Code m\u00fcssen Sie die Platzhalter durch die tats\u00e4chlichen Werte ersetzen. Nach dem Aufrufen des API-Endpunkts \/v2\/shares erhalten Sie den HTTP-Code &#8218;201&#8216;. Dies bedeutet, dass der Beitrag auf LinkedIn erstellt (geteilt) wird.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-implementieren-sie-die-anmeldung-mit-linkedin-in-website-mit-php\/\" title=\"So implementieren Sie die Anmeldung mit LinkedIn in Website mit PHP\">So implementieren Sie die Anmeldung mit LinkedIn in Website mit PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/melden-sie-sich-mit-linkedin-in-laravel-mit-laravel-socialite-an\/\" title=\"Melden Sie sich mit LinkedIn in Laravel mit Laravel Socialite an\">Melden Sie sich mit LinkedIn in Laravel mit Laravel Socialite an<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-integrieren-sie-die-google-sheets-api-mit-php\/\" title=\"So integrieren Sie die Google Sheets-API mit PHP\">So integrieren Sie die Google Sheets-API mit PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Aufnahmequelle:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f6chten Sie einen Beitrag auf LinkedIn \u00fcber die API teilen? In diesem Artikel werden wir ein PHP-Skript schreiben, das zusammen mit einem Post auf LinkedIn sendet<\/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":[272],"tags":[845],"class_list":["post-26304","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-3","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/26304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/comments?post=26304"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/26304\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/20147"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=26304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=26304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=26304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}