把 X(Twitter)连接到 Social Quack
在 X 的后台里建一个属于自己的应用,充几美元额度,帖子就会按时发出 —— 密钥加密保存在您自己的 Mac 上。
X 是 Social Quack 里唯一一个发帖要花钱的平台。除此之外它都很简单:您创建一个属于自己的小型开发者应用,把两个密钥粘贴进 Social Quack,再在 X 自己的页面上同意授权。只做这一次 —— X 这种连接永不过期,不存在每隔几周就要重连一回的事。
因为这个应用是您的,密钥会加密保存在您自己的电脑上,发帖额度也只属于您一个人。您不会和别人的账号共用一个池子,所以别人的行为连累不到您被限流。
1. 它要花多少钱
X 已经没有免费发帖档位了。 老的 Free (Standard Basic) 权限已废弃 —— 还停留在那一档的应用每次尝试发帖都会被拒。要通过 X 的 API 发帖,您需要一个 Pay Per Use 计划下的开发者账号,并且充上一点额度。一条帖子的成本是几美分。
充 $5–10 完全够开头用了。这只适用于 X;Bluesky、Mastodon 和 Social Quack 里的其他平台都是免费的。
2. 先在 Social Quack 里打开 X 卡片
从应用这边开始,这样待会儿要复制的那个值就已经摆在屏幕上了:
侧边栏的 Channels(渠道)→ X (Twitter) 卡片 → Set up app keys(设置应用密钥)。
(某个工作区一旦存过密钥,这个按钮就会变成 Edit app keys(编辑应用密钥)—— 打开的是同一个面板。)
那个面板里有最后要填的两个输入框,以及它们上方的回调地址,也就是 X 所说的 Callback URI,旁边配了复制按钮。它里面带着这一份 Social Quack 正在使用的端口,所以请用复制按钮取,别自己敲 —— 差一个字符 X 就会拒收。这个窗口先别关。
3. 创建一个 Pay Per Use 项目并充值
- 前往 https://console.x.com,打开 Projects。您需要一个 Pay Per Use 计划下的项目。如果您手头只有一个老的 Free (Standard Basic) 项目,它已经不能用了 —— 改用 Pay Per Use 的那个,或者新建一个。
- Billing → Credits:充 $5–10。
4. 创建应用
在这个 Pay Per Use 项目里:Apps → Create App。
已经有一个应用躺在老项目里?那就把它挪过来,走 Project Access → Manage。
5. 设置权限和回调地址
打开应用 → Settings,在 Authentication settings 那一节里:
| 设置项 | 该选什么 |
|---|---|
| Permissions | Read and write |
| Type of App | Web App |
| Callback URI | Social Quack 在 Set up app keys 界面上显示的那个回调地址 —— 用它的复制按钮取,原样粘贴 |
| Website | 任意网址 |
保存。这一步一定要在下一步之前做完:在权限改动之前生成的密钥会保留旧的权限级别,那样您在 X 上同意授权之后连接就会失败。
6. 复制 API Key 和 Secret
应用 → Keys & Tokens → OAuth 1.0 Keys → 对 Consumer Key 点 Regenerate,然后把它显示给您的两个值复制下来:
- API Key (Consumer Key)
- API Key Secret (Consumer Secret)
那个 secret 只会显示一次。要是您没复制就关掉了页面,再 regenerate 一次就好 —— 另外,每次改动应用权限之后都要重新 regenerate。
重新生成会让旧的那一对在所有地方作废:X 用这对密钥为您的每一条帖子签名,所以一旦 regenerate,旧的就死了。如果您把它们粘贴到了不止一个工作区,就逐个打开那些工作区的 Set up app keys 面板,把新的一对也粘进去 —— 保存会重新打开 X 的授权页面,同意之后该账号会被原地重连,它排好的一切都保留下来。还留着旧密钥的工作区将无法发帖。
7. 粘贴进来并连接
回到 Social Quack,还是那个 Set up app keys 面板:把它们粘到 API Key (Consumer Key) 和 API Key Secret (Consumer Secret) 里,点 Save(保存)。没有别的按钮要按 —— 保存密钥会立刻在您的浏览器里打开 X 的授权页面。用您想发帖的那个账号同意授权。浏览器随后会停在一个 Connected! 页面上,告诉您关掉标签页回到 Social Quack。照做就行:账号已经在 Channels 页面上等着了。
密钥存好之后,X 卡片上的 Connect(连接)按钮自己就能发起同样的授权 —— 改天要加第二个账号或者重新连接某个账号,用的就是它。
您可以用同一个应用连接好几个账号:如果您给不同品牌分了工作区,那就一个工作区一个账号。每个工作区都保存自己那份密钥,所以在侧边栏切换工作区,把同样的两个值粘进那个工作区的 Set up app keys 面板 —— 在那里保存同样会为该工作区打开授权页面。X 里一个应用就够用了。
8. 您可以往 X 发什么
| 帖子长度 | 280 个字符 |
| 帖串 | 支持 —— 每一段都作为上一段的回复发出 |
| 图片 | 最多 4 张,挂在帖串的第一条上,可带替代文字 |
| 视频 | 支持 |
超出 X 允许尺寸的照片,或者它不接受的格式,都会在发出之前替您缩放和转换好 —— 您不用提前准备什么。
出问题时怎么办
| 您看到的情况 | 这说明什么 | 该怎么做 |
|---|---|---|
帖子失败,报 403 和 client-not-enrolled |
这个应用不在 Pay Per Use 项目里 —— 老的免费权限已经不管用了 | 在 Pay Per Use 项目里创建这个应用,或者用 Project Access → Manage 把它挪过去 |
| 在 X 上同意授权之后,出现 Connection failed 页面并提示 X token exchange failed | 通常是密钥在您改动应用权限之前就生成了,仍带着旧的级别。也可能是别的应用的密钥,或者复制 secret 时被截断了 | Keys & Tokens → OAuth 1.0 Keys → Regenerate,把两个值重新复制一遍,粘进 Set up app keys 并点 Save —— 授权页面会再次打开 |
| 同一个 Connection failed 页面上提示 X users/me failed | 这个应用没有挂在一个具备 API 权限的项目下 | 确认这个应用确实位于您的 Pay Per Use 项目里 |
| X API Key / Secret not configured | 这个工作区没有存过密钥 —— 每个工作区各存各的 | 在侧边栏切到那个工作区,然后 Channels → X → Set up app keys,两个都粘上并点 Save |
| 重新生成密钥之后,发往某个 X 账号的帖子开始失败(X rejected the post,401) | 新的那一对只进了您当时所在的那个工作区;其他工作区手里还是已经作废的旧密钥 | 在其余每一个工作区里:Set up app keys,粘贴新的一对,Save,再到 X 上同意一次。账号会被原地重连,排好的帖子都保留 —— 千万别移除渠道,那会把它的帖子一起删掉 |
| X 的授权页面报错、Social Quack 干脆报错而不是打开它,或者您落在一个标题为 Connection failed 的页面上 | 通常是 X 里的 Callback URI 和 Social Quack 显示的那个对不上 | 从 Set up app keys 面板里重新复制那个回调地址,粘进应用 → Settings → Callback URI 并保存,然后在 Social Quack 的 X 卡片上点 Connect |
| 浏览器停在 Connected! 页面上,没有把您带回去 | 一切正常 —— Social Quack 是在您平时的浏览器里打开 X 的,浏览器没法跳回应用里 | 关掉标签页切回 Social Quack;账号已经在 Channels 页面上了 |
| 用了一阵子之后帖子开始失败,而您这边什么都没改 | 您的额度用完了 —— 每条帖子都要花几美分 | Billing → Credits,充值 |
| 帖子失败,报 429 或者 500 开头的错误 | X 在对您限流,或者它自己出了点状况 | 什么都不用做 —— Social Quack 把这些当作临时状况,会自己重试 |
| API Key Secret 弄丢了 | 它只会显示那一次 | 对 Consumer Key 点 Regenerate,把新的一对粘进 Set up app keys 并点 Save —— 每一个用到 X 的工作区都要做,因为旧的那一对在所有地方都失效了 |
还是不行?[email protected]。