Cara Berbagi Teks di LinkedIn menggunakan API di PHP

oleh Vincy. Terakhir diubah pada 16 Mei 2021.

Sebelumnya, kita telah melihat cara masuk dengan LinkedIn. Ini adalah langkah berikutnya yang mengikuti setelah masuk untuk mengirim teks dan berbagi di LinkedIn.

Ini akan sangat membantu jika Anda ingin mengizinkan situs web PHP Anda untuk berbagi konten dengan jejaring sosial LinkedIn secara terprogram menggunakan API.

LinkedIn menyediakan konsol pengembang untuk membuat dan mengelola aplikasi untuk mengakses API-nya. Ini menyediakan banyak API dan juga layanan khusus yang sesuai.

Ini menyediakan dokumentasi yang baik untuk menggunakan API. Sangat mudah untuk menyiapkan parameter API yang diperlukan dan menangani respons jika Anda mengikuti dokumentasi API.

Mengakses LinkedIn API untuk berbagi konten adalah proses dua langkah. Yang pertama adalah otentikasi untuk seseorang atau organisasi, kemudian yang berikutnya adalah untuk berbagi di LinkedIn.

Artikel ini akan menjelaskan dengan contoh bagaimana menggunakan LinkedIn API di PHP dan berbagi di LinkedIn.

Tentang LinkedIn API yang digunakan untuk berbagi konten

Di antara API LinkedIn, kode contoh ini menggunakan dua di antaranya selama proses berbagi konten 2 langkah.

Di akhir langkah pertama yang mengotentikasi orang tersebut, ia menggunakan uses API Profil untuk mendapatkan id profil anggota LinkedIn.

Kemudian menggunakan API UGC (Konten Buatan Pengguna) untuk memposting teks dan berbagi di LinkedIn.

LinkedIn API memungkinkan untuk memposting media dan URL juga. Contoh skrip PHP ini menetapkan parameter untuk membuat hanya berbagi teks di LinkedIn.

Tentang contoh ini

Bagikan di LinkedIn untuk menjangkau jutaan orang dan membuat konten Anda viral. Kami telah melihat cara memposting foto atau video ke Facebook menggunakan PHP SDK.

Contoh skrip ini akan membantu untuk mencapainya menggunakan pemrograman PHP dengan langkah-langkah sederhana yang dapat dimengerti.

Ini termasuk kode minimal dan kelas PHP khusus untuk menyiapkan permintaan API dan menangani tanggapan. Ini menerjemahkan respons LinkedIn API dan mengakui serta mengarahkan pengguna berdasarkan itu.

File konfigurasi mendefinisikan konstanta PHP untuk mengatur kunci dan token aplikasi LinkedIn API. Ini adalah params yang digunakan untuk mengotorisasi permintaan yang dimulai.

Ini menggunakan GuzzleHTTP untuk mengirim permintaan HTTPS ke LinkedIn API. Jalankan perintah komposer di bawah ini untuk menginstal perpustakaan ini ke dalam kode contoh ini.

composer require guzzlehttp/guzzle

Struktur file berikut menunjukkan kesederhanaan implementasi.

Berbagi Teks di File LinkedIn

Langkah-langkah untuk membuat berbagi teks di LinkedIn

Bagian ini merupakan bagian penting dari artikel ini yang menjelaskan proses langkah-demi-langkah pembuatan a berbagi teks di LinkedIn.

  1. Buat aplikasi LinkedIn API
  2. Hasilkan dan Konfigurasikan kunci API
  3. Ambil kode otorisasi
  4. Tukarkan kode otorisasi untuk mendapatkan token akses
  5. Dapatkan id profil LinkedIn
  6. Posting berbagi teks di LinkedIn

Buat aplikasi LinkedIn API

Konsol pengembang LinkedIn memungkinkan pembuatan aplikasi untuk mengakses layanan API. Cukup masuk ke konsol pengembang dan klik tombol “Buat Aplikasi”.

Buat Aplikasi Linkedin

Dengan mengklik “Buat aplikasi”, itu akan menampilkan formulir untuk memasukkan beberapa detail dasar. Ini akan memungkinkan izin yang ditetapkan dan URL panggilan balik.

Ada jenis izin yang harus diatur berdasarkan akses yang diperlukan. Kumpulan contoh ini w_member_social izin untuk membuat aplikasi.

URL panggilan balik adalah titik akhir aplikasi. Ini akan dipanggil dari LinkedIn setelah orang tersebut menyetujui Aplikasi untuk mengakses profil LinkedIn.

Hasilkan dan Konfigurasikan kunci API

Setelah mengirimkan detailnya, dasbor pengembang LinkedIn akan menampilkan kunci aplikasi. Salin id klien dan kunci rahasia dan konfigurasikan di konfigurasi aplikasi.

Ini adalah langkah biasa untuk menghasilkan kunci dalam bekerja dengan API pihak ketiga. Sebelumnya, kita telah melihat cara membuat kunci untuk Google Recaptcha.

Kode berikut adalah untuk mengatur kunci API dengan konstanta PHP. Ini juga mendefinisikan root aplikasi, URL panggilan balik, dan cakupan.

Umum/config.php

<?php
namespace Phppot;

class Config
{

    const WEB_ROOT = "https://yourdomain/share-text-on-linkedin";

    // Linkedin API configuration
    const CLIENT_ID = '';

    const CLIENT_SECRET = '';

    const CALLBACK_URL = Config::WEB_ROOT . '/linkedin_callback.php';
    
    const SCOPE = 'w_member_social';
}


Ambil kode otorisasi

Setelah mendapatkan kunci API, langkah ini menggunakannya untuk mendapatkan kode otorisasi. Kode ini untuk menukarnya untuk mendapatkan token akses di langkah berikutnya.

Langkah pertama adalah mengarahkan pengguna ke halaman otorisasi LinkedIn untuk menyetujui aplikasi.

Kode ini memastikan bahwa otorisasi dilakukan dengan memeriksa indeks sesi PHP untuk token akses dan id profil. Jika tidak kosong, maka pengalihan akan terjadi untuk pertama kalinya saja.

Ini adalah halaman arahan yang menunjukkan formulir untuk memposting berbagi teks di LinkedIn.

index.php

<?php
namespace Phppot;

require_once __DIR__ . '/lib/LinkedinService.php';
$linkedinService = new LinkedinService();

session_start();
if (! empty($_SESSION["access_token"]) && ! empty($_SESSION["linkedin_id"])) {
    $accessToken = $_SESSION["access_token"];
    $linkedinProfileId = $_SESSION["linkedin_id"];
} else {
    $redirectUrl = $linkedinService->getOauthURL();
    header("Location: " . $redirectUrl);
    exit();
}
session_write_close();

if (! empty($_POST["text"])) {
    $output = $linkedinService->sharePost($accessToken, $linkedinProfileId);
}

?>
<html>
<head>
<title>Home</title>
<link rel="stylesheet" href="https://phppot.com/php/how-to-text-share-on-linkedin-using-api-in-php/assets/style.css">
</head>
<body>
	<div class="phppot-container">
		<h1>Create Text Share on Linkedin</h1>
		<div class="post-form-container">
			<form name="frm-text-share" method="post" action="">
				<div>
					<textarea name="post" class="txt-post" cols="40" rows="8" required></textarea>
				</div>
				<div class="text-right">
					<input type="submit" class="btn-submit" value="Share Post" />
				</div>
			</form>
		</div>
	</div>
	<?php
if (! empty($output["type"])) {
    ?>
	<div class="<?php echo $output["type"]; ?>"><?php echo $output["message"]; ?></div>
	<?php
}
?>
</body>
</html>


Tukarkan kode otorisasi untuk mendapatkan token akses

Setelah menyetujui aplikasi, LinkedIn mengarahkan pengguna ke URL panggilan balik seperti yang dikonfigurasi.

Kode di bawah ini menunjukkan titik akhir callback PHP. Itu meminta token akses dengan mengirimkan kode otorisasi yang didapat di langkah terakhir.

Itu getAccessToken() metode yang ditentukan dalam kelas LinkedinService menyiapkan parameter permintaan untuk mendapatkan token akses.

Itu juga melewati hibah_tipe, client_id, kunci rahasia, redirect_uri dengan parameter permintaan. Ini menetapkan header dan content_type seperti yang diinstruksikan dalam dokumentasi API.

Ini menggunakan OAuth 2.0 untuk proses otorisasi dan otentikasi.

linkedin_callback.php

<?php
namespace Phppot;

require_once './lib/LinkedinService.php';
$linkedinService = new LinkedinService();

session_start();
if (! empty($_GET["code"])) {
    $response = $linkedinService->getAccessToken($_GET["code"]);
    if (! empty($response) && $response["type"] == "success") {
        $_SESSION["access_token"] = $response["access_token"];
        $response = $linkedinService->getProfileData($response["access_token"]);
        if (! empty($response) && $response["type"] == "success") {
            $_SESSION["linkedin_id"] = $response["linkedin_profile_id"];
            header("Location: index.php");
            exit();
        } else {
            $message = $response["message"];
        }
    } else {
        $message = $response["message"];
    }
}
session_write_close();
?>
<?php
if (! empty($message)) {
    ?>
<HTML>
<head>
<title>Problem in getting LinkedIn API access token</title>
<link rel="stylesheet" href="https://phppot.com/php/how-to-text-share-on-linkedin-using-api-in-php/assets/style.css">
</head>
<body>
	<div class="phppot-container">
		<div class="error">
            <?php echo $message; ?> <a href="index.php">Try again</a>.
		</div>
	</div>
</body>
</HTML>
<?php
}
?>

Dapatkan id profil LinkedIn

Untuk memposting berbagi teks di LinkedIn, kami mendapatkan satu parameter kunci dari API. Yang lainnya adalah Id profil LinkedIn untuk mengatur penulis berbagi teks.

Pada langkah ini, ia memanggil titik akhir API untuk mendapatkan data profil dengan mengirimkan token akses.

Dalam contoh sebelumnya, kami mengakses titik akhir ini untuk mendapatkan profil anggota setelah masuk dengan LinkedIn melalui API.

Kami telah melihat banyak contoh untuk menerapkan login OAuth dengan Twitter, Facebook, Google. Jika Anda mencari kode login OAuth Twitter, tutorial tertaut memiliki kode tersebut.

Posting berbagi teks di LinkedIn

Dengan demikian, kami telah mengambil parameter yang diperlukan untuk memposting berbagi teks di LinkedIn.

Itu bagikanPos() fungsi dari Layanan Linkedin class menyetel parameter ini untuk mengirim permintaan POST ke API.

Itu membangun badan permintaan dan params header untuk menjalankan permintaan.

Ini mengatur penulis, konten tertentu, siklus hidup dan visibilitas dengan badan permintaan. ID profil LinkedIn diatur dengan penulis. Isi formulir posting diatur dengan atribut konten tertentu.

Itu siklus hidup dan visibilitas adalah dengan nilai-nilai DITERBITKAN dan PUBLIK masing-masing.

Dokumentasi API menegaskan tentang cara mengatur param header. Itu bagikanPos() fungsi mempersiapkannya dengan mengatur token akses dan X-Restli-Protocol-Version : 2.0.0

lib/LinkedinService.php


 <?php
namespace Phppot;

use GuzzleHttpClient;

class LinkedinService
{

    private $clientId;

    private $clientSecret;

    private $callbackURL;

    private $scope;

    public function __construct()
    {
        require_once __DIR__ . '/../Common/Config.php';
        $this->clientId = Config::CLIENT_ID;
        $this->clientSecret = Config::CLIENT_SECRET;
        $this->callbackURL = Config::CALLBACK_URL;
        $this->scope = Config::SCOPE;
    }

    public function getOauthURL()
    {
        $authUrl = "https://www.linkedin.com/oauth/v2/authorization";
        $redirectUrl = $authUrl . "?response_type=code&client_id=" . $this->clientId . "&redirect_uri=" . $this->callbackURL . "&scope=" . $this->scope;

        return $redirectUrl;
    }

    public function getAccessToken($code)
    {
        require_once 'vendor/autoload.php';

        $params = array (
            'form_params' => array(
                "grant_type" => "authorization_code",
                "code" => $code,
                "redirect_uri" => $this->callbackURL,
                "client_id" => $this->clientId,
                "client_secret" => $this->clientSecret
            ),
            'headers' => array(
                "Content-Type" => "application/x-www-form-urlencoded"
            )
        );

        try {
            $client = new Client([
                'base_uri' => 'https://www.linkedin.com'
            ]);
            $response = $client->request('POST', '/oauth/v2/accessToken', $params);
            $data = json_decode($response->getBody()->getContents(), true);
            $output = array(
                "type" => "success",
                "access_token" => $data['access_token']
            );
        } catch (Exception $e) {
            $output = array(
                "type" => "error",
                "message" => $e->getMessage()
            );
        }
        return $output;
    }

    public function getProfileData($accessToken)
    {
        require_once 'vendor/autoload.php';
        
        $params = array(
            'headers' => array(
                "Authorization" => "Bearer " . $accessToken
            )
        );
        
        try {
            $client = new Client([
                'base_uri' => 'https://api.linkedin.com'
            ]);
            $response = $client->request('GET', '/v2/me', $params);
            $data = json_decode($response->getBody()->getContents(), true);
            $output = array(
                "type" => "success",
                "linkedin_profile_id" => $data['id']
            );
        } catch (Exception $e) {
            $output = array(
                "type" => "error",
                "message" => $e->getMessage()
            );
        }

        return $output;
    }

    public function sharePost($accessToken, $linkedinProfileId)
    {
        require_once 'vendor/autoload.php';

        $requestBody = '{
            "author": "urn:li:person:' . $linkedinProfileId . '",
            "lifecycleState": "PUBLISHED",
            "specificContent": {
                "com.linkedin.ugc.ShareContent": {
                    "shareCommentary": {
                        "text": "' . $_POST["text"] . ' "
                    },
                    "shareMediaCategory": "NONE"
                }
            },
            "visibility": {
                "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
            }
        }';
        
        $params = array(
            'headers' => array(
                "Authorization" => "Bearer " . $accessToken,
                "Content-Type" => "application/json",
                "x-li-format" => "json",
                "X-Restli-Protocol-Version" => '2.0.0'
            ),
            'body' => $requestBody
        );

        try {
            $client = new Client([
                'base_uri' => 'https://api.linkedin.com'
            ]);
            $response = $client->request('POST', '/v2/ugcPosts', $params);

            if ($response->getStatusCode() !== 201) {
                $output = array(
                    "type" => "error",
                    "message" => $response->getLastBody()->errors[0]->message
                );
            } else {
                $output = array(
                    "type" => "success",
                    "message" => 'Post is shared on LinkedIn successfully'
                );
            }
        } catch (Exception $e) {
            $output = array(
                "type" => "error",
                "message" => $e->getMessage()
            );
        }

        return $output;
    }
}

Output – Formulir UI untuk membuat berbagi teks di LinkedIn

Tangkapan layar keluaran ini menunjukkan formulir sederhana yang mengumpulkan konten teks dari pengguna. Dengan mengklik tombol “Bagikan Posting”, formulir memposting konten di area teks ke PHP.

Jika PHP menemukan token akses dan id profil LinkedIn tidak kosong, maka PHP akan mengaktifkan permintaan API untuk dibagikan di LinkedIn.

Formulir Kiriman Teks Bagikan di LinkedIn

Kesimpulan

Jadi, kami telah menerapkan cara membuat berbagi teks di LinkedIn. Ini juga membantu mengingat langkah otorisasi dan otentikasi anggota sebelum membagikan konten.

Kami telah melihat banyak contoh login OAuth melalui API. Anda juga dapat menemukan kode login Google OAuth dan otentikasi terbuka Facebook dengan artikel tertaut.

Saya percaya bahwa contoh kode ini akan membuat Anda jelas untuk memahami bagaimana pembagian di LinkedIn bekerja melalui API.

Unduh

Kembali ke Atas


Source link