构建社交媒体自动化: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,我们需要执行以下步骤:
- 使用您的 LinkedIn 帐户前往 LinkedIn 开发者控制台。
- 单击“创建应用程序”按钮创建一个新应用程序。
- 填写应用程序名称(例如社交媒体测试器)和应用程序徽标图像等详细信息。
- 您将需要一个 LinkedIn 公司页面来与您正在创建的应用程序关联(您拥有管理员访问权限的任何页面都可以在之后验证连接)。
完成后,门户会将您重定向到应用程序仪表板,我们可以在其中开始配置应用程序所需的权限和 API 产品。
设置权限
在应用仪表板中,单击产品选项卡并请求访问“在 LinkedIn 上共享”和使用 OpenID Connect 产品通过 LinkedIn 登录。
配置 OAuth 2.0 设置
授予这些权限后,我们可以使用 OAuth 2.0 令牌生成器工具为应用程序生成访问令牌。令牌应包含以下范围:w_member_social 用于代表用户发帖,profile 和 openid 用于用户身份验证和个人资料信息。
此访问令牌是一个三足 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 环境变量。此步骤对于函数的验证和正确运行至关重要。
概括
我们利用 LinkedIn API JavaScript 客户端和 Netlify 无服务器功能,成功构建了一个无服务器 API,代表用户在 LinkedIn 上共享文章 URL。这标志着博客文章社交媒体共享流程自动化的重要一步。
从这里,我们可以扩展自动化工作流程以包括其他社交媒体平台和计划任务。例如,我们可以集成 X(以前称为 Twitter)、Facebook 或 BlueSky 等平台,并自定义帖子的时间和内容,以最大限度地提高受众参与度和覆盖范围。
就这样,请继续关注本系列的更多更新!
? 通过我的新书《学习 Vue》了解 Vue 3 和 TypeScript!
? 想支持我吗?请我喝杯咖啡。
喜欢这篇文章或觉得它有帮助吗?分享一下?
以上是构建社交媒体自动化:LinkedIn 与无服务器功能共享的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。
