發布新文章或部落格文章後,就需要在社群媒體上進行推廣。手動分享貼文可能既耗時又低效。在本文中,我們將探討如何建立一個無伺服器函數,以使用其 JavaScript API 用戶端和 Netlify 無伺服器函數在 LinkedIn 上共用文章 URL。這是建立社群媒體推廣自動化工作流程的一部分。
要學習本教程,您將需要以下內容:
要開始使用 LinkedIn API,我們需要執行以下步驟:
完成後,入口網站會將您重新導向到應用程式儀表板,我們可以在其中開始設定應用程式所需的權限和 API 產品。
在應用程式儀表板中,點擊產品標籤並要求存取「在 LinkedIn 上分享」和使用 OpenID Connect 產品透過 LinkedIn 登入。
授予這些權限後,我們可以使用 OAuth 2.0 令牌產生器工具為應用程式產生存取權杖。令牌應包含以下範圍:w_member_social 用於代表使用者發帖,profile 和 openid 用於使用者身份驗證和個人資料資訊。
此存取權杖是一個三足 OAuth 令牌,確保使用者已明確授權應用程式代表他們執行操作。產生令牌後,我們可以使用它來進行身份驗證並安全地向 LinkedIn API 發出請求。此外,我們可以在應用程式儀表板的 Auth 標籤中查看授予應用程式的權限和範圍。
太棒了!現在我們已經設定了存取權杖和應用程序,我們可以開始建立自動化以代表用戶(在本例中為我們)在 LinkedIn 上發布資訊。
要開始以程式設計方式共享帖子,我們可以透過將其安裝為專案依賴項來使用官方 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(與用戶的 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}。此外,我們指定:
這是更新的實作:
npm install linkedin-api-js-client # or with yarn yarn add linkedin-api-js-client
接下來,我們在實體物件的 SpecificContent 欄位中定義共用內容。對於此場景,specifiedContent 欄位包含一個 com.linkedin.ugc.ShareContent 對象,該物件具有以下屬性:
以下是更新後的程式碼:
// 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 將此功能公開為無伺服器端點,使我們更接近完全自動化在社群媒體上分享文章的過程。
我們執行 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 呼叫的非同步性質。
接下來,我們更新無伺服器函數以執行以下操作:
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,請執行以下命令:
npm install linkedin-api-js-client # or with yarn yarn add linkedin-api-js-client
CLI 將函數部署到您的 Netlify 生產環境。然後,您可以在 Netlify 儀表板中找到該函數端點。
重要: 確保在儀表板中配置 LINKEDIN_ACCESS_TOKEN 環境變數。此步驟對於函數的驗證和正確運行至關重要。
我們利用 LinkedIn API JavaScript 用戶端和 Netlify 無伺服器功能,成功建立了一個無伺服器 API,代表使用者在 LinkedIn 上共享文章 URL。這標誌著部落格文章社交媒體共享流程自動化的重要一步。
從這裡,我們可以擴展自動化工作流程以包括其他社群媒體平台和規劃任務。例如,我們可以整合 X(以前稱為 Twitter)、Facebook 或 BlueSky 等平台,並自訂貼文的時間和內容,以最大限度地提高受眾參與度和覆蓋範圍。
就這樣,請繼續關注本系列的更多更新!
? 透過我的新書《學習 Vue》了解 Vue 3 和 TypeScript!
? 想支持我嗎?請我喝杯咖啡。
喜歡這篇文章或覺得它有幫助嗎?分享一下?
以上是建立社群媒體自動化:LinkedIn 與無伺服器功能共享的詳細內容。更多資訊請關注PHP中文網其他相關文章!