故障排除与令牌指南

连接 LinkedIn、Facebook、Instagram 和 YouTube 到 ContentFlows 的分步说明。每个平台都需要 两个值:访问令牌(授予权限)和 ID(要发布到哪个账户 / 页面 / 渠道)。两者都需要粘贴到您的仪表板中。

凭据如何存储

所有四个平台的值都会以一个加密的 JSON blob 形式保存在 AWS Secrets Manager 中,路径为 contentflows/tenants/YOUR_TENANT_ID/social-tokens。机密信息不会被记录,不会在保存后再次显示,并且与您的账户隔离。ContentFlows 从不存储您的社交媒体密码。


LinkedIn

ContentFlows 使用 LinkedIn UGC Posts API 代表您发布内容。您需要一个带有 w_member_social 权限作用域的访问令牌,以及帖子应显示在其下的账户 member URN

ContentFlows 会向您询问的字段

LINKEDIN_ACCESS_TOKEN
OAuth 2.0 访问令牌(有效期 60 天)。以 AQV… 或类似内容开头。
LINKEDIN_AUTHOR_ID
Member URN — 格式类似 urn:li:person:XXXXXXXXXX 或 Company Page 的 urn:li:organization:NNNNNN。

前提条件

  • 一个 LinkedIn 账户(个人资料)— 帖子将从该账户发布
  • 一个免费的 LinkedIn 开发者账户 — 您在创建应用时会自动创建

分步说明

1

前往 LinkedIn 开发者门户

打开 linkedin.com/developers/apps 并登录。点击 Create app
2

填写应用详情

  • App name: 任意名称 — 例如 “ContentFlows Publisher”
  • LinkedIn page: 您必须关联一个 LinkedIn Company Page。如果您还没有,请先创建一个基础公司主页(免费)。
  • App logo: 上传任意方形图片
点击 Create app
3

申请 'Share on LinkedIn' 产品

在应用页面,点击 Products 标签。找到 Share on LinkedIn 并点击 Request access。通常会立即批准。
4

添加重定向 URI

前往 Auth 标签。在 OAuth 2.0 settings 下添加此重定向 URL:
https://www.linkedin.com/developers/tools/oauth/redirect
点击 Update
5

生成访问令牌

前往 linkedin.com/developers/tools/oauth/token-generator。选择您的应用,勾选 w_member_social(如果可用,还勾选 r_liteprofile),点击 Request access token,再点击 Allow。复制令牌——它不会再次显示。这就是您的 LINKEDIN_ACCESS_TOKEN
6

找到您的 Member URN

在同一个 token-generator 工具中,使用内置 API 测试器:
GET https://api.linkedin.com/v2/userinfo
响应中包含 sub — 在其前加上 urn:li:person: 即可形成您的 URN。例如,如果 sub = "ABC123xyz",您的 URN 就是 urn:li:person:ABC123xyz这就是您的 LINKEDIN_AUTHOR_ID
提示:如果您想从 LinkedIn Company Page 而不是个人资料发布,请改用 urn:li:organization:COMPANY_PAGE_NUMERIC_ID——该数字 ID 可在页面管理员 URL 中看到。
7

将两个值粘贴到 ContentFlows

在您的仪表板中,前往 Integrations → LinkedIn。将访问令牌粘贴到 Access token 字段,将 URN 粘贴到 Member URN 字段,然后点击 Save
注意:LinkedIn 访问令牌会在 60 days 后过期。每两个月重复步骤 5 和 7(URN 永远不会改变)。请设置日历提醒。

Facebook

ContentFlows 发布到 Facebook Page(不是个人资料)。您需要一个带有 pages_manage_posts 权限的 Page access token,以及数字形式的 Page ID

ContentFlows 会向您询问的字段

FB_PAGE_ACCESS_TOKEN
来自 Meta for Developers 的长期 Page access token(60 天)。
FB_PAGE_ID
您所管理的 Facebook Page 的数字 ID(例如 123456789012345)。

前提条件

  • 一个 Facebook 账户,并且是某个 Facebook Page 的 Admin
  • 如果您还没有 Facebook Page,请前往 facebook.com/pages/create 创建一个(免费,耗时 2 分钟)

分步说明

1

打开 Meta for Developers 门户

前往 developers.facebook.com/apps 并登录。点击 Create App
2

选择应用类型并填写详情

将应用类型选择为 Business。填写应用名称、联系邮箱,然后点击 Create App
3

添加 Facebook Login 产品

在仪表板中,在产品列表里找到 Facebook Login,然后点击 Set up。无需额外配置。
4

从 Graph API Explorer 获取用户令牌

打开 Graph API Explorer
  • 在右上角下拉菜单中选择您的应用
  • 点击 Generate Access Token
  • 在权限弹窗中,勾选 以下全部
    • pages_manage_posts发布帖子所必需(最常遗漏的作用域)
    • pages_read_engagement
    • pages_show_list
    • business_management
    • instagram_basic — 仅当您计划将此令牌用于 Instagram 时需要
    • instagram_content_publish — 仅当您计划将此令牌用于 Instagram 时需要
  • 点击 Generate Access Token 并授权
这会给您一个短期的 User access token(有效期约 2 小时)。步骤 5–6 会将其转换为永不过期的 Page 访问令牌。
5

将用户令牌延长为长期令牌(60 天)

将用户令牌粘贴到 Access Token Debugger 中,点击 Debug,然后点击底部的 Extend Access Token。您将获得一个新的用户令牌,有效期约 60 天。在下一步中使用此扩展令牌。
6

派生 Page access token 和 Page ID

回到 Graph API Explorer,将步骤 5 中的长期用户令牌粘贴到 Access Token 字段,然后运行:
GET /me/accountsSubmit
在 JSON 响应中,找到您的 Page。它有两个重要字段:
  • access_token → 这就是您的 FB_PAGE_ACCESS_TOKEN — 因为它是从长期用户令牌派生的,这个 Page token 永不过期
  • id → 这就是您的 FB_PAGE_ID
复制这两个值。
7

将两个值粘贴到 ContentFlows

在您的仪表板中,前往 Integrations → Facebook。将 Page token 粘贴到 Page access token,将数字 page ID 粘贴到 Page ID,然后点击 Save
8

验证令牌是否具有正确作用域(可选但推荐)

将新的 Page token 粘贴到 Access Token Debugger 中并检查:
  • Type: PAGE(不是 USER — 如果显示 USER,说明您在步骤 6 中复制了错误的令牌)
  • Expires: Never(如果它显示日期,说明您跳过了步骤 5——在调用 /me/accounts 时,用户令牌仍然是短期的)
  • Scopes: 必须包含 pages_manage_posts。如果缺失,说明您在步骤 4 中没有勾选该项——请从步骤 4 重新开始。
提示:常见 403 原因: 如果您的定时帖子失败并显示 {"error":{"message":"(#200) Permissions error"}},那么令牌通常缺少 pages_manage_posts。请使用调试器(步骤 8)验证,并在需要时重新生成。

Instagram

Instagram 发布使用 Facebook Graph API,因此您的 Instagram 账户必须是已连接到 Facebook Page 的 Professional account(Business 或 Creator)。个人 Instagram 账户不能通过 API 发布。

ContentFlows 会向您询问的字段

IG_ACCESS_TOKEN
可选 — 留空,ContentFlows 会回退到 FB_PAGE_ACCESS_TOKEN。仅在您有专用 Instagram 令牌时填写。
IG_BUSINESS_ACCOUNT_ID
与您的 Facebook Page 关联的 Instagram Business Account ID(例如 17841412345678901)。

前提条件

  • 一个 Instagram BusinessCreator 账户(不是个人账户)
  • 该 Instagram 账户已连接到您管理的 Facebook Page
  • 一个具有 instagram_content_publish 权限的 Meta 开发者应用

转换为 Professional 账户(如需要)

1

在 Instagram 应用中切换账户类型

在手机上,前往您的 Instagram 个人主页 → 点按 ☰ 菜单 → SettingsAccountSwitch to Professional Account。选择 BusinessCreator
2

将 Instagram 连接到您的 Facebook Page

仍在 Instagram 设置中,前往 AccountLinked AccountsFacebook。登录并选择您的 Page。

获取 Instagram Business Account ID

3

打开 Graph API Explorer

前往 developers.facebook.com/tools/explorer。选择您的应用并生成一个包含以下权限的令牌:
instagram_basic, instagram_content_publish, pages_read_engagement, pages_manage_posts
4

找到您的 Instagram Business Account ID

运行 GET /me/accounts。找到您的 Page 并复制其 id。然后运行:
GET /{page-id}?fields=instagram_business_account
(将 {page-id} 替换为您的 Page ID)。响应中会包含一个 instagram_business_account 对象——复制其中的 id这就是您的 IG_BUSINESS_ACCOUNT_ID
5

将这些值粘贴到 ContentFlows

在您的仪表板中,前往 Integrations → Instagram。将 IG Business Account ID 粘贴到 Business Account ID。将 Access token 字段留空,以复用您已经配置好的 Facebook Page 令牌——这是最简单的路径,也是大多数人的做法。点击 Save
注意:如果您已经保存了 Facebook,Instagram 的访问令牌会默认使用 FB Page 令牌。您只需要提供 IG_BUSINESS_ACCOUNT_ID

YouTube

ContentFlows 使用 YouTube Data API v3 为您的内容日历生成视频元数据(标题、描述、标签)。您需要来自 Google Cloud Console 的 API key 和您的频道 ID。

ContentFlows 会向您询问的字段

YOUTUBE_API_KEY
启用了 YouTube Data API v3 的 Google Cloud API key。以 AIza… 开头。
YOUTUBE_CHANNEL_ID
您的 YouTube channel ID(例如 UCxxxxxxxxxxxxxxxxxxxxxx)。可在 YouTube Studio → Settings → Channel → Advanced settings 中找到。

前提条件

  • 一个 Google 账户
  • 与该账户关联的 YouTube 频道
  • 一个免费的 Google Cloud 项目(您会在第一步中创建)

分步说明

1

创建 Google Cloud 项目

前往 console.cloud.google.com/projectcreate,为项目起任意名称(例如 “ContentFlows”),然后点击 Create
2

启用 YouTube Data API v3

在选择新项目后,前往 YouTube Data API v3 并点击 Enable
3

创建 API key

进入 APIs & Services → Credentials。点击 + Create credentials → API key。复制该 key — 这就是您的 YOUTUBE_API_KEY
提示:点击 Restrict key,并将其限制为仅用于 YouTube Data API v3,以提高安全性。
4

找到您的 YouTube Channel ID

前往 YouTube StudioSettings(左下角齿轮图标)→ ChannelAdvanced settings。您的 Channel ID 会列在那里——复制它。它以 UC 开头。这就是您的 YOUTUBE_CHANNEL_ID
5

将两个值粘贴到 ContentFlows

在您的仪表板中,前往 Integrations → YouTube。将 API key 粘贴到 API key,将 channel ID 粘贴到 Channel ID,然后点击 Save
注意:API key 仅用于读取——它会生成元数据,但不会上传视频。上传仍然需要 OAuth,而这不在当前的入门流程中。


发送域名(DKIM / SPF / DMARC)

默认情况下,通讯从 noreply@contentflows.cc 发出。验证您自己的域名可以提高送达率(减少进入垃圾箱的概率),因为 From 地址会与 DKIM 签名和您可见的品牌保持一致。

前提条件

  • 您拥有一个域名(例如 your-business.com)。
  • 您可以在域名注册商处创建 DNS 记录(Cloudflare、Route53、GoDaddy、Namecheap 等)。

分步说明

1

开始流程

在仪表板中打开 Brand → 找到底部的 Sending domain 卡片 → 输入您的域名(例如 your-business.com)→ 点击 Save & show DNS records
2

复制这 5 条 DNS 记录

卡片现在会显示 5 条记录:
  • 3 × CNAME(DKIM 令牌)
  • 根域上的 1 × TXT(SPF)
  • 位于 _dmarc.your-domain.com 的 1 × TXT(DMARC)
使用每一行旁边的 Copy 按钮,逐条复制。
3

粘贴到您的 DNS 提供商

登录您的 DNS 托管商,按显示的精确主机名/名称和值创建每条记录。对于 CNAME,不要在后面追加您的域名——显示的主机名就是完整名称(例如 abc123._domainkey.your-domain.com)。
提示:Cloudflare 用户:请关闭 DKIM CNAME 上的橙色云(代理)— SES 需要原始记录。
4

验证

回到仪表板,点击 I added the records — Verify。该卡片每 15 秒轮询一次 SES,最长 10 分钟。全球 DNS 传播通常在 2 分钟内完成,但某些提供商可能更久。
5

完成

一旦验证成功,您租户发送的所有通讯都会使用 newsletter@your-domain.com 作为 From 头,并带有 DKIM 签名、SPF 通过和 DMARC 对齐。
注意:您可以随时在同一张卡片中移除该域名——之后邮件会回退到共享的 noreply@contentflows.cc 发件人。

导入订阅者

Newsletter 标签中的 + Import 按钮会打开一个包含三个标签页的弹窗:

CSV 上传

上传一个 .csv 文件。系统会自动检测表头行(任何名称中包含 email 的列都会被视为邮箱列;任何包含 namefirst 的列都会被视为姓名)。无效邮箱地址会被拒绝;重复项会被跳过。在 Import 启用前请勾选同意复选框。

Mailchimp

粘贴您的 Mailchimp API key(格式:abc123...-us21 — 最后一个连字符后的部分是数据中心)以及 Audience ID(Mailchimp Audience 仪表板 → Settings → Audience name and defaults → Audience ID)。ContentFlows 会拉取所有已订阅成员。

ConvertKit

粘贴您的 ConvertKit API key(Settings → Advanced → API Key)。所有已确认的订阅者都会被导入。

常见问题

  • Mailchimp 401 Unauthorized — API key 错误,或者账户禁用了它。请在 Mailchimp → Account → Extras → API keys 中重新生成。
  • “No valid email addresses” — CSV 解析器未检测到邮箱列。请确认存在表头行,并且有一列的名称明确为 email
  • 导入瞬间完成但添加 0 条 — 每一行都已经在您的列表中了。重新导入时这是正常的。

常见问题

令牌无效或已过期

访问令牌会过期。LinkedIn 令牌有效期约 60 天。当由长期用户令牌派生时,Facebook/Instagram Page 令牌 永不过期(请严格按照 Facebook 部分的步骤操作)。生成一个新令牌并在 Integrations 中更新。

Facebook:发布时出现 (#200) Permissions error

到目前为止,最常见的原因是:Page 令牌缺少 pages_manage_posts 作用域。这个作用域很容易在权限弹窗中遗漏,因为 Graph API Explorer 默认不会启用它。请在 Access Token Debugger 中验证您的令牌——如果 pages_manage_posts 不在 scopes 列表中,请从 Facebook 指南的步骤 4 重新生成令牌,并明确勾选该权限。

LinkedIn:无效的 URN

Member URN 必须以 urn:li:person:(个人资料)或 urn:li:organization:(Company Page)开头,后跟账户的唯一 ID。单独的纯数字或字母数字字符串并不是有效的 URN。

LinkedIn 权限不足

您的 LinkedIn 应用没有批准 Share on LinkedIn 产品,或者生成令牌时没有包含 w_member_social。返回 LinkedIn 指南的步骤 3,然后重新生成令牌。

Facebook:Page ID 错误

Page ID 是 /me/accounts 返回的数字 id 字段,不是 Page URL 中可读的用户名。如果您误填了用户名,帖子将发布失败。

您必须是 Facebook Page 的管理员

生成该令牌的 Facebook 账户并不是目标 Page 的管理员。请让 Page 管理员自己生成令牌,或者让他们在 facebook.com → Page settings → Page roles 中将您添加为管理员。

Instagram:不是 Business 或 Creator 账户

个人 Instagram 账户不能使用 Content Publishing API。请按照上面的转换步骤操作。

Instagram:账户未连接到 Facebook Page

您的 Instagram Professional 账户未连接到 Facebook Page。请前往 Instagram Settings → Account → Linked Accounts → Facebook 完成连接。

YouTube:API 配额超限

YouTube Data API 默认每天有 10,000 units 的配额,这对 ContentFlows 的元数据查询来说绰绰有余。如果您达到上限,很可能是同一个 API key 还在别处使用——请为 ContentFlows 单独创建一个 key。


还是卡住了?

联系支持,并附上错误信息以及您正在连接的平台。请包含您卡住的步骤编号。

相关内容