Syndroo文档
网站GitHub概览

LinkedIn

概览

提供商 ID 为 linkedin。它会使用必需的 LinkedIn-Version 请求头,将一条成员帖子发布到 POST https://api.linkedin.com/rest/posts。组织帖子尚未实现:作者选择只接受 member。

要求

  • 一个带有 client id 和 client secret 的 LinkedIn 开发者应用。
  • 一个为授权步骤注册的重定向 URI。
  • 用于发布的成员授权。代表成员发布所记录的授权范围是 w_member_social。

凭证

字段含义机密
client_id应用的 client id。否
client_secret应用的 client secret。是

发布作者为 urn:li:person:{id},成员 ID 通过 GET /v2/me 解析;LinkedIn 已将该接口标记为弃用。这里刻意不使用 GET /v2/userinfo 来确定作者,因为它的 sub 对每个应用都不同,并不是稳定的全局成员 ID。无法读取成员 ID 时,连接会安全失败,而不会猜测。

连接

redirectUri 必填;机器调用方可以把 client id、client secret 和范围列表作为连接选项传入。

{
  "type": "start",
  "provider": "linkedin",
  "options": {
    "redirectUri": "https://example.com/oauth/callback/linkedin",
    "scopes": ["w_member_social", "openid", "profile"]
  }
}
syndroo connect --input connect.json --json

未解决。所读取的令牌端点没有记录 PKCE,因此提供商绝不添加 code_challenge。启动步骤会返回一个授权动作;本地 CLI 会使用 --redirect-uri 和控制终端,或使用 --callback-url - 自行完成该回调,如凭证参考所述。这条本地回调路径只针对本地服务器做了模拟测试;尚未连接真实的 LinkedIn 账号。

首次发布

{
  "type": "prepare",
  "content": {},
  "targets": [
    {
      "provider": "linkedin",
      "options": { "commentary": "Hello from Syndroo.", "visibility": "PUBLIC" }
    }
  ]
}
syndroo publish --input post.json --json

成功时返回 HTTP 201,响应头包含已创建帖子的 URN。该请求头只会随响应到达,因此帖子创建后发生超时会使结果保持 unknown,并且不可重试。

能力

清单声明 text,并以带有 lifecycleState: PUBLISHED 的成员帖子发布。未解决。所获取的页面没有记录评论正文的最大长度,因此本指南既不给出字符上限,提供商也不强制执行。

选项

位置可接受的键
连接选项redirectUri(必填)、clientId、clientSecret、scopes。
发布选项commentary 和 visibility(均必填)、author(仅限 member)、distribution、linkedinVersion。
内容无必填项;LinkedIn 使用目标选项。

未解决。linkedinVersion 在提供商清单中固定为 202601,也是唯一接受的值。LinkedIn 按月更新此请求头,因此应将该常量视为等待对照当前 API 版本重新核验,而不是推荐值。

故障排除

提供商从不重试,只在已确认失败未被应用时报告失败。被拒绝或已经使用的授权码会作为回调拒绝报告,而不会重试。未解决。LinkedIn 的错误响应格式尚未在一手页面确认,因此本指南不描述其结构。

撤销与安全

未解决。尚未获取官方的移除权限或撤销令牌步骤,因此本指南不提供撤销 URL。请从 LinkedIn 设置中移除应用访问权限,然后断开本地连接:

syndroo connect --disconnect <connectionId>