第 1 步:创建你的 X 开发者账号
登录开发者控制台

完成引导
进入控制台
第 2 步:创建一个应用
进入 Apps 页面

创建应用

选择环境

关闭初始凭证弹窗
第 3 步:配置应用权限
打开你的应用设置


设置应用权限

设置应用类型

设置回调地址与网站地址
- Callback URL: 同时添加下面两个回调地址:
https://profile.ayrshare.com/social-accountshttps://app.ayrshare.com/social-accounts
- Website URL:
https://app.ayrshare.com

保存你的设置
- API Key(又名 Consumer Key,X 应用的标识符)
- API Secret(又名 Consumer Secret)
第 4 步:购买 X API 额度
X 现在采用基于额度(credit)的 API 计费方式,通过开发者控制台购买。进入计费页面

购买额度

启用自动充值

第 5 步:更新你的 Ayrshare API 调用
在第 3 步中,你已在你自己的 env、config 或密钥管理器中妥善保存了以下 2 项:- API Key(又名 Consumer Key,X 应用的标识符)
- API Secret(又名 Consumer Secret)
Header 对照表
代码示例
迁移已有资料(Business & Enterprise)
如果你已经有一些子资料通过 Ayrshare 关联了 X,那么在你切换到 BYO 密钥之后,这些资料需要重新关联 X 账号。这是因为已有的 access token 是在 Ayrshare 的 X 应用下签发的,无法与你自己的 consumer keys 一起使用(OAuth 1.0a 签名与签发该 token 的应用绑定)。在 generateJWT 中包含你的密钥
twitterApiKey 和 twitterApiSecret 添加到 generateJWT 调用的 body 中。它们会被加密并与链接会话一起存储,不会暴露给您的最终用户。POST /profiles/link-sessions。其他所有 X 请求都使用上面描述的请求头。让用户重新关联 X
- 通过 Unlink API 以编程方式解除关联,然后让用户重新授权
- 在 generateJWT 中使用
logout参数 强制重新登录 - 使用
allowedSocial在迁移流程中让关联页面只显示 X
在所有 API 调用中持续携带 headers
X-Twitter-OAuth1-Api-Key 和 X-Twitter-OAuth1-Api-Secret header。验证你的配置
通过 Ayrshare API 使用新的 header 发起一次测试调用,确认一切正常。/analytics/social 接口是一个不错的轻量级测试,因为它不会创建任何帖子。X API 定价方式
以前,Ayrshare 会代你承担 X API 的使用费用。在 X 当前的模式下,每个 Ayrshare 客户都需自行维护自己的 X 开发者账号,并直接向 X 支付其应用发起的 API 请求费用。(一个 X 开发者账号对应一个 Ayrshare 账号,而不是每个最终用户一个。所有子资料共享同一个 X 开发者账号和额度余额。) X 的定价采用按使用量付费模式:你在 X Developer Console 中购买额度,API 请求发起时会从中扣除。无需签署合同或订阅。 常见操作的费用较低。例如:使用自己的 X API Key 的好处
使用你自己的 X API 凭证比之前的共享密钥模式提供了更多的控制与可靠性。这包括:- 品牌化的 OAuth 体验: 用户在授权访问 X 时会看到你的应用名称与品牌。
- 独立的速率限制: 你的 API 使用受你自己的 X 开发者账号限额约束,与其他 Ayrshare 用户彼此独立。你可以在 X Developer Console 中监控用量,并参阅 X API 速率限制文档。
- 凭据控制: 你的 API Key 和 Secret 保留在你自己的 X Developer 账户中。Ayrshare 不会存储你在请求头中发送的密钥。唯一的例外是创建链接 URL,详见下方的安全部分。
- 可移植性: 由于用户是通过你的 X App 进行认证,整个集成始终处于你的完全掌控之下。
- 用量可见性: 你的 X Developer Dashboard 会展示 API 请求、速率限制与额度使用情况。
安全性
- 你在请求头中发送的 API Key 和 API Secret 仅用于该次请求,Ayrshare 不会存储它们。
- 创建链接 URL 是例外。当你把
twitterApiKey和twitterApiSecret传给POST /profiles/generateJWT或POST /profiles/link-sessions时,这一对密钥会被加密并与该链接会话一起存储,因为稍后你的用户为 X 授权时链接页面需要用到它。当你吊销该链接、或下一次打开或查询一个已过期的链接时,它会被移除;无论如何,它都会在 30 天内随会话记录一并删除。 - 关于一般安全最佳实践,请参见 X 的身份验证安全指南。
常见问题
X API Key 的要求现在已经生效了吗?
X API Key 的要求现在已经生效了吗?
X API 大概需要多少费用?
X API 大概需要多少费用?
我已经有 X 开发者账号了。可以用现有的密钥吗?
我已经有 X 开发者账号了。可以用现有的密钥吗?
X Developer Portal 显示了很多凭证。我实际需要哪几个?
X Developer Portal 显示了很多凭证。我实际需要哪几个?
'API Key' 和 'Client ID' 有什么区别?
'API Key' 和 'Client ID' 有什么区别?
- API Key(也叫 “Consumer Key”)用于 OAuth 1.0a。API Key(Consumer Key)+ API Secret 就是 Ayrshare 所使用的凭证。它支持全部 X 功能,token 永不过期,也无需 refresh 逻辑。
- Client ID 用于 OAuth 2.0。Ayrshare 不需要这个。OAuth 2.0 的 token 在短时间后就会过期,还需要管理 refresh token。
为什么使用 OAuth 1.0a 而不是 OAuth 2.0?
为什么使用 OAuth 1.0a 而不是 OAuth 2.0?
我现有的用户需要重新关联他们的 X 账号吗?
我现有的用户需要重新关联他们的 X 账号吗?
这一变更会影响向 Instagram、LinkedIn 或其他平台发帖吗?
这一变更会影响向 Instagram、LinkedIn 或其他平台发帖吗?
通过 RSS/Feed 自动发帖到 X 呢?
通过 RSS/Feed 自动发帖到 X 呢?
我为什么会收到 402 "CreditsDepleted" 错误?
我为什么会收到 402 "CreditsDepleted" 错误?
我为什么会收到 403 "Forbidden: OAuth1 App Permissions" 错误?
我为什么会收到 403 "Forbidden: OAuth1 App Permissions" 错误?
- 你的应用权限被设为了 “Read” 而不是 “Read and write”。 在 Developer Console 中打开该应用的 Settings,将其更改为 Read and write and Direct message。
- 你在关联 X 账号之后修改了权限。 Access Token 会保留创建时的权限。请通过 OAuth 重新关联 X 账号,让新的 token 继承更新后的权限。
如果我在配置过程中需要帮助怎么办?
如果我在配置过程中需要帮助怎么办?
故障排查
我收到关于缺少 header 的 400 错误
我收到关于缺少 header 的 400 错误
X-Twitter-OAuth1-Api-KeyX-Twitter-OAuth1-Api-Secret
我收到 403 错误:"Callback URL not approved"
我收到 403 错误:"Callback URL not approved"
https://profile.ayrshare.com/social-accountshttps://app.ayrshare.com/social-accounts
我收到 402 错误:"CreditsDepleted"
我收到 402 错误:"CreditsDepleted"
我收到 403 错误:"oauth1 app permissions"
我收到 403 错误:"oauth1 app permissions"
- 你的应用权限被设为了 “Read” 而不是 “Read and write”。 在 Developer Console 中打开该应用的 Settings,将其更改为 Read and write and Direct message。
- 你在关联 X 账号之后修改了权限。 Access Token 会保留创建时的权限。请通过 OAuth 重新关联 X 账号,让新的 token 继承更新后的权限。
