搜尋
首頁web前端js教程建立社群媒體自動化:LinkedIn 與無伺服器功能共享

發布新文章或部落格文章後,就需要在社群媒體上進行推廣。手動分享貼文可能既耗時又低效。在本文中,我們將探討如何建立一個無伺服器函數,以使用其 JavaScript API 用戶端和 Netlify 無伺服器函數在 LinkedIn 上共用文章 URL。這是建立社群媒體推廣自動化工作流程的一部分。

目錄

  • 目錄
  • 先決條件
  • 入門
    • 設定權限
    • 設定 OAuth 2.0 設定
  • 使用 LinkedIn API JS 用戶端透過 URL 共享帖子
    • 取得使用者的唯一id
    • 分享貼文網址
  • 公開為 Netlify 無伺服器函數
  • 測試功能
  • 使用 Netlify 進行部署
  • 總結

先決條件

要學習本教程,您將需要以下內容:

  • LinkedIn 帳號
  • 已安裝 Node.js 和 Netlify CLI。
  • 為部署無伺服器功能而建立的 Netlify 帳戶和網站。
  • JavaScript 和 TypeScript 的基礎。

入門

要開始使用 LinkedIn API,我們需要執行以下步驟:

  1. 使用您的 LinkedIn 帳戶前往 LinkedIn 開發者控制台。
  2. 點擊「建立應用程式」按鈕以建立新應用程式。 Building Social Media Automation: LinkedIn Sharing with Serverless Function
  3. 填寫應用程式名稱(例如社交媒體測試器)和應用程式徽標圖像等詳細資訊。
  4. 您將需要一個 LinkedIn 公司頁面來與您正在建立的應用程式關聯(您擁有管理員存取權限的任何頁面都可以在之後驗證連線)。

Building Social Media Automation: LinkedIn Sharing with Serverless Function

完成後,入口網站會將您重新導向到應用程式儀表板,我們可以在其中開始設定應用程式所需的權限和 API 產品。

Building Social Media Automation: LinkedIn Sharing with Serverless Function

設定權限

在應用程式儀表板中,點擊產品標籤並要求存取「在 LinkedIn 上分享」和使用 OpenID Connect 產品透過 LinkedIn 登入。

Building Social Media Automation: LinkedIn Sharing with Serverless Function

配置 OAuth 2.0 設定

授予這些權限後,我們可以使用 OAuth 2.0 令牌產生器工具為應用程式產生存取權杖。令牌應包含以下範圍:w_member_social 用於代表使用者發帖,profile 和 openid 用於使用者身份驗證和個人資料資訊。

Building Social Media Automation: LinkedIn Sharing with Serverless Function

此存取權杖是一個三足 OAuth 令牌,確保使用者已明確授權應用程式代表他們執行操作。產生令牌後,我們可以使用它來進行身份驗證並安全地向 LinkedIn API 發出請求。此外,我們可以在應用程式儀表板的 Auth 標籤中查看授予應用程式的權限和範圍。

太棒了!現在我們已經設定了存取權杖和應用程序,我們可以開始建立自動化以代表用戶(在本例中為我們)在 LinkedIn 上發布資訊。

使用 LinkedIn API JS 用戶端透過 URL 共享帖子

要開始以程式設計方式共享帖子,我們可以透過將其安裝為專案依賴項來使用官方 LinkedIn API JavaScript Client for Node.js:

npm install linkedin-api-js-client

# or with yarn
yarn add linkedin-api-js-client

該庫提供了一種直接、輕量級的方式與 LinkedIn API 端點交互,在底層利用 Axios 和 TypeScript。

接下來,讓我們建立一個新檔案 linkedin.ts 來封裝在 LinkedIn 上分享貼文的邏輯。我們首先初始化一個客戶端實例來與 API 交互,如下所示:

// linkedin.ts
import { RestliClient } from 'linkedin-api-js-client';

const client = new RestliClient();

獲取用戶的唯一id

要代表用戶發帖,我們首先需要檢索用戶的唯一 ID(與用戶的 LinkedIn 句柄不同)。這可以透過使用 /userinfo 端點和先前產生的存取權杖來完成:

// linkedin.ts
const getUserId = async (accessToken: string) => {
  const userResponse = await client.get({
    resourcePath: "/userinfo",
    accessToken
  });

  return userResponse.data?.sub;
};

唯一 ID 位於回應資料的子欄位中。下一步需要此值:代表用戶分享貼文。

分享貼文網址

在 linkedin.ts 中,我們定義了一個共享貼文 URL 的函數,如下所示:

type SharePostArgs = {
  url: string;
  text: string;
};

export const sharePost = async (token: string, content: SharePostArgs) => {
  //logic
};

sharePost 函數會取得存取權杖和要分享的內容,其中包括 URL 和貼文附帶的文字。然後,我們將使用 /ugcPosts 端點在使用者生成內容資源上建立一個新的貼文實體,如下所示:

export const sharePost = async (token: string, content: SharePostArgs) => {
  const response = await client.create({
    resourcePath: '/ugcPosts',
    accessToken: token,
    entity: {
      //entity payload
    }
  });
};

實體有效負載配置為包含先前檢索到的使用者的唯一 ID(作為作者)。作者欄位遵循格式 urn:li:person:${userId}。此外,我們指定:

  • 生命週期狀態為「已發布」。
  • 可見性為“PUBLIC”,因此該貼文對 LinkedIn 網路可見。

這是更新的實作:

npm install linkedin-api-js-client

# or with yarn
yarn add linkedin-api-js-client

接下來,我們在實體物件的 SpecificContent 欄位中定義共用內容。對於此場景,specifiedContent 欄位包含一個 com.linkedin.ugc.ShareContent 對象,該物件具有以下屬性:

  • shareCommentary:接受content.text作為要顯示的主要文字內容。
  • shareMediaCategory:指定貼文中分享的媒體類型(設定為「ARTICLE」)。
  • 媒體:「文章」類別的媒體資產數組,其中每個項目包括:要共享的 URL 和就緒狀態。

以下是更新後的程式碼:

// linkedin.ts
import { RestliClient } from 'linkedin-api-js-client';

const client = new RestliClient();

成功完成請求後,回應包含一個createdEntityId,代表所建立實體的唯一ID。我們可以將此值傳回給呼叫者以供進一步參考:

// linkedin.ts
const getUserId = async (accessToken: string) => {
  const userResponse = await client.get({
    resourcePath: "/userinfo",
    accessToken
  });

  return userResponse.data?.sub;
};

就是這樣!我們創建了一個函數,利用 LinkedIn API 代表用戶共享貼文 URL。在下一步中,我們將使用 Netlify 將此功能公開為無伺服器端點,使我們更接近完全自動化在社群媒體上分享文章的過程。

公開為 Netlify 無伺服器函數

我們執行 CLI 指令 netlify Functions:create 並依照指示建立一個名為 share-on-linkedin 的新 Netlify 無伺服器函數。 Netlify CLI 將在函數目錄中產生具有以下初始程式碼的函數:

type SharePostArgs = {
  url: string;
  text: string;
};

export const sharePost = async (token: string, content: SharePostArgs) => {
  //logic
};

在上面的程式碼中,我們使用 TypeScript 並將函數定義為 async 來處理 LinkedIn API 呼叫的非同步性質。

接下來,我們更新無伺服器函數以執行以下操作:

  • 解析請求正文以提取要分享的內容,
  • 從環境變數中擷取存取權杖(可以在專案根目錄的 .env 檔案中設定),
  • 使用提取的參數呼叫 sharePost 函數(之前在 linkedin.ts 中定義),並且
  • 傳回已建立的實體 ID 作為回應。
export const sharePost = async (token: string, content: SharePostArgs) => {
  const response = await client.create({
    resourcePath: '/ugcPosts',
    accessToken: token,
    entity: {
      //entity payload
    }
  });
};

至此,Serverless 功能就準備好了。我們可以將其部署到 Netlify 並透過向端點發出 POST 請求來測試其功能。

測試功能

要測試無伺服器功能,請使用 CLI 指令 netlify dev 啟動本機伺服器。然後,使用 Postman 或 Insomnia 等工具使用以下 JSON 負載向伺服器端點發送 POST 請求:

export const sharePost = async (token: string, content: SharePostArgs) => {
  //Get user's unique id
  const userId = await getUserId(token);

  const response = await client.create({
    resourcePath: '/ugcPosts',
    accessToken: token,
    entity: {
      author: `urn:li:person:${userId}`,
      lifecycleState: "PUBLISHED",      
      visibility: {
        "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
      }
    }
  });
};

或者,我們可以建立一個簡單的表單 UI 來與無伺服器函數 API 交互,並驗證貼文是否已成功在 LinkedIn 上共享。

一旦該功能按預期工作,我們就可以繼續將其部署到 Netlify 以使其可供使用。

使用 Netlify 進行部署

要將我們的函數部署到 Netlify,請執行以下命令:

npm install linkedin-api-js-client

# or with yarn
yarn add linkedin-api-js-client

CLI 將函數部署到您的 Netlify 生產環境。然後,您可以在 Netlify 儀表板中找到該函數端點。

重要: 確保在儀表板中配置 LINKEDIN_ACCESS_TOKEN 環境變數。此步驟對於函數的驗證和正確運行至關重要。

Building Social Media Automation: LinkedIn Sharing with Serverless Function


概括

我們利用 LinkedIn API JavaScript 用戶端和 Netlify 無伺服器功能,成功建立了一個無伺服器 API,代表使用者在 LinkedIn 上共享文章 URL。這標誌著部落格文章社交媒體共享流程自動化的重要一步。

從這裡,我們可以擴展自動化工作流程以包括其他社群媒體平台和規劃任務。例如,我們可以整合 X(以前稱為 Twitter)、Facebook 或 BlueSky 等平台,並自訂貼文的時間和內容,以最大限度地提高受眾參與度和覆蓋範圍。

就這樣,請繼續關注本系列的更多更新!

透過我的新書《學習 Vue》了解 Vue 3 和 TypeScript!

想支持我嗎?請我喝杯咖啡。

喜歡這篇文章或覺得它有幫助嗎?分享一下?

以上是建立社群媒體自動化:LinkedIn 與無伺服器功能共享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

如何使用Next.js(前端集成)構建多租戶SaaS應用程序如何使用Next.js(前端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript:探索網絡語言的多功能性JavaScript:探索網絡語言的多功能性Apr 11, 2025 am 12:01 AM

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的演變:當前的趨勢和未來前景JavaScript的演變:當前的趨勢和未來前景Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。