Firebase Dynamic Links API如何更新社交图片并保留原短链接URL
问题
我当前使用如下代码创建Firebase短链接,功能运行正常。但当我需要更新社交图片时,若传入仅社交图片URL与原参数不同的longDynamicLink,接口会生成全新的短链接。这意味着所有此前分发的旧短链接都需要替换为新链接,而部分旧短链接已经印刷在二维码上,无法完成替换。
请问如何通过API调用保留原有短链接?
备注:经测试,在Firebase控制台中执行相同操作时,修改社交图片后可以保持原短链接不变,实际上控制台支持修改任意参数后仍保留对应短链接。
原实现代码:
const options = { method: 'POST', uri: `https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=${firebaseProjectApiKey}`, headers: { 'Content-Type': 'application/json' }, body: { "longDynamicLink": dynamicLinkUrl, "suffix": { "option": "SHORT" } }, json: true // Automatically stringifies the body to JSON };
回答
你当前调用的/v1/shortLinks POST接口是短链创建接口,默认行为就是为每一次合法请求生成全新的短链后缀,不会自动匹配已有相似参数的短链,这是你每次调用都拿到新短链的核心原因。
控制台修改参数后能保留原短链,本质是调用了短链更新接口而非创建接口,通过API实现同样效果的操作步骤如下:
- 提取原有短链的后缀字段:比如你的短链为
https://your-project.page.link/aBc123,后缀就是aBc123 - 将请求方法从
POST改为PATCH,请求地址替换为对应短链的资源路径:https://firebasedynamiclinks.googleapis.com/v1/shortLinks/{你提取的短链后缀}?key=${firebaseProjectApiKey} - 移除请求体中的
suffix字段,仅传入更新了社交图片参数的longDynamicLink字段即可 - 接口调用成功后,原有短链的跳转规则、社交元信息都会同步更新,短链本身不会发生变化,已经印刷投放的二维码、分发出去的链接都可以正常使用,不需要替换。
注意事项:
- 调用时必须使用原短链所属Firebase项目的API密钥,跨项目调用会返回权限错误
- 微信、Twitter等社交平台的卡片信息存在本地缓存,更新后最长可能需要7天自动生效,紧急场景可以到对应平台的卡片调试工具手动触发缓存刷新
修改后的可直接复用的代码示例:
// 替换为你要保留的原有短链的后缀 const targetShortSuffix = "原有短链的后缀字段"; // 替换为更新了社交图片参数的新动态长链接 const updatedLongDynamicLink = "包含新社交图地址的longDynamicLink"; const options = { method: 'PATCH', uri: `https://firebasedynamiclinks.googleapis.com/v1/shortLinks/${targetShortSuffix}?key=${firebaseProjectApiKey}`, headers: { 'Content-Type': 'application/json' }, body: { "longDynamicLink": updatedLongDynamicLink }, json: true };
内容的提问来源于stack exchange,提问作者MadMac
相关产品推荐
相关产品推荐

