Skip to main content
generateJWT 端点可为单个 User Profile 生成社交网络关联 URL。 更多细节请参阅 Business Plan 与 Launch Plan API 集成
generateJWT 已不再是创建链接 URL 的唯一方式。 它仍然可用,本页也仍然描述它,但新的集成请使用 创建 Link Session:无需任何 private key,并且你可以 查看链接是否已被打开,或在过期前 吊销它两个端点使用同一个校验器,因此本页关于 expiresInallowedSocialinstagramLinkMethodredirectlogout 和 Connect Accounts 邮件的所有说明对两者都适用。generateJWT 保留了三项新端点 会拒绝的宽松处理:allowedSocial 中无法识别的网络、只提供 X 凭据的一半、以及非字符串的 redirect

发送链接 URL

链接 URL 会让你的用户登录到他们的 profile,因此请像对待密码一样对待它。通过你信任的渠道发送,不要 记录到日志中,也不要转交给第三方。它在整个有效期内都可以使用,因此重新加载或重试 OAuth 都没问题, 但每个链接只发给一位用户,并为每个人单独创建链接。

切换 Profile

要在不同的 profile 会话之间切换(例如在使用多个 profile 进行测试时),你需要先将当前 profile 登出。请参阅自动登出 Profile 会话以了解如何正确处理 profile 切换。

Profile Key

profileKey 指明链接 URL 对应哪个 User Profile。在 Ayrshare 开发者控制台切换到该 profile 即可找到它。
Private Key 已不再使用。链接 URL 不再签名,因此无需从文件读取任何内容,也无需粘贴到代码里。privateKey 仍会被接受并忽略,所以现有集成继续工作,Integration Package 中的 private.key 文件可以不再使用。

生成链接 URL

1 分钟视频,演示如何创建链接 URL。该视频录制于 Link Sessions 之前,因此仍然演示了发送 Private Key;该步骤已不再需要。
链接 URL 的有效期为 5 分钟。5 分钟后必须重新生成链接 URL。 如需更多选项,请参阅 Max Pack expiresIn

打开链接 URL

请在新的浏览器标签页、新的浏览器窗口或 iOS 上的 View Controller 中打开链接 URL。 你可以控制新窗口或标签页的关闭或重定向
社交网络不允许在 iFrame 中打开该 URL,也不允许对已获批准的合作伙伴来源域名 profile.ayrshare.com 进行混淆处理。

验证 URL

verify: true 已不再使用。它会被接受并忽略。 没有需要验证的签名 token:返回的 token 会在你的用户打开该 URL 时由链接页面校验。此选项过去会用你的 Private Key 重新解析 JWT,以便在你把 URL 发出去之前发现损坏的密钥。由于流程中已不再有密钥,这种失败不会再发生。

在 Postman 中测试

建议首先在 Postman 中测试链接 URL 的生成。 在控制台 Primary Profile 的 API Key 页面可获取的 Integration Package 中,包含一个示例 Postman 配置 JSON 文件。 只需将该配置文件导入 Postman,在 profileKey body 字段中填入你的 Profile Key(可在 Ayrshare 开发者控制台中切换到你要测试的 profile 后获取),然后点击蓝色的 Send 按钮即可。 示例配置仍会预填 privateKeydomainprivateKey 会被忽略;除非你的账户拥有多个链接域名,否则可以清空 domain 你也可以从 Postman 生成代码

Instagram 关联方式

Instagram 账户可以通过两种方式进行关联:直接使用 Instagram Login,或通过一个已关联的 Facebook Page。 当用户在社交关联页面上点击 Instagram 按钮时,会启动哪种流程,通常由控制台中账户级别的 Instagram Login 设置决定。 generateJWT 端点instagramLinkMethod body 参数允许你为单个关联 URL 覆盖该设置: 例如,如果你账户的默认设置为使用 Facebook Page 关联,以下示例将仅在本次关联会话中强制使用直接 Instagram Login:
Instagram Link Method
生成的链接 URL 将包含该覆盖设置,当用户在关联页面上点击 Instagram 按钮时,将在该会话期间(包括跨越 Instagram/Facebook 授权跳转)按所请求的流程进行。 需要注意的几点:
  • 该覆盖仅对由所返回 URL 打开的关联页面生效,并不会更改账户级别的 Instagram Login 设置,也不会影响其他关联会话。
  • 如果省略 instagramLinkMethod,关联页面将使用账户级别的设置,与以往行为完全一致。
  • 如果传入非法值,将返回 400 错误,并列出合法值(instagramfacebook)。
  • 在选择覆盖之前,请查看两种流程之间的功能差异——某些 Instagram 功能(例如 hashtag 搜索和合作发布)仅在使用 Facebook Page 认证时可用。

JWT Expires In

如果你希望 链接的超时时间比默认的 5 分钟更长,请加入 expiresIn 字段。 例如,发送以下 JSON 可将链接 URL 的有效期设置为 30 分钟:
JWT Expires In
这样你就可以直接将该链接通过电子邮件发送给你的用户,而不必让他们打开你的应用或平台。 常见用例是:当你的用户需要重新连接某个社交账户时,你可以直接通过邮件将 JWT 链接发送给他们,直接完成重新关联,而无需让他们回到你的平台。
请务必与你的安全团队讨论,业务上希望 JWT 保持多长时间的有效期。 较长的过期时间会增加未授权方访问该链接的风险。

集成

Bubble.io

如果你是 Bubble 用户,请参阅 Bubble.io 章节中的 在 Bubble 中生成链接 URL:

Bubble linking URL

移动端 JWT

以下 Swift、Flutter 和 React Native 移动端代码示例展示了如何在 iOS 设备上启动社交关联页面。 请将 jwtURL 字符串变量替换为 /generateJWT 端点返回的值。

Swift (iOS)

在 Swift 中,使用 UIViewControllerSFSafariViewControllerDelegate。 不建议使用 WebView,因为某些社交网络(如 Facebook 和 Google)会阻止认证。

Flutter (Dart)

在 Flutter (Dart) 中没有直接等同于 UIViewControllerSFSafariViewController 的组件。 不过,你可以使用 url_launcher 包打开 Web URL,以实现类似功能。

React Native

React Native 同样没有直接对应 SFSafariViewController 的组件,但你可以使用 expo-web-browser 提供的 WebBrowser API 达到类似效果,该 API 会在一个模态浏览器窗口中打开 URL,并与系统浏览器共享 cookies。此外,你也可以使用内置的 React Native Linking 函数打开 Safari:await Linking.canOpenURL(jwtURL);

移动端代码示例

Connect Accounts 邮件

与更长的过期时间选项配合使用时,你还可以让 Ayrshare 自动向你的用户发送一封包含社交关联页面链接的电子邮件。

Connect Accounts JSON

例如,以下 JSON 会向 john@user.com 发送一封邮件,其中公司名称为 ACME,联系邮箱为 support@mycompany.com,并附带条款和隐私政策链接:
Example Contact Email Request
如果设置了 email 和过期时间,响应中将包含以下字段:
Example Contact Email Response

Connect Accounts 邮件示例

以下是一封带有 Connect Account 链接的邮件示例,点击后将打开社交关联页面: 邮件将从以下地址发出: Social Connect Hub <connect@socialconnecthub.com>