Firebase动态链接setLongLink参数截断问题求助
解决生成短链接时URL参数丢失的问题
哦,这个问题我之前也碰到过!本质是你没对整个目标URL做完整的URL编码,导致goo.gl服务把你目标链接里的&当成了它自己的参数分隔符,所以evaluator=7被当成了goo.gl请求的参数,而不是你要跳转的链接的一部分——哪怕你转义了单个&,也不够彻底。
问题根源
当你把目标链接作为link参数的值传给goo.gl时,这个值本身需要是一个合法的URL参数值,意味着所有特殊字符(包括?、=、&这些)都得编码。你之前只转义了&,但?和=虽然暂时没引发截断,但完整编码能彻底避免这类参数解析错误。
修正后的代码示例(Java)
直接用URLEncoder对整个原始链接编码就行,不用手动转义任何字符:
import java.net.URLEncoder; import java.nio.charset.StandardCharsets; // 你的原始目标链接,保留原本的参数格式 String originalTargetLink = "howdoyoudo.co.il?id=123&evaluator=7"; // 对整个链接做URL编码,确保所有特殊字符都被正确处理 String encodedLink = URLEncoder.encode(originalTargetLink, StandardCharsets.UTF_8.name()); // 拼接成goo.gl的长链接请求地址 String dynamicLinkUrl = "https://k5xt4.app.goo.gl/?link=" + encodedLink; // 继续执行你生成短链接的Task代码...
为什么这样有效?
编码后的链接会变成howdoyoudo.co.il%3Fid%3D123%26evaluator%3D7,goo.gl服务拿到这个link参数值后,会正确解码出完整的目标链接,生成的短链接跳转时就能同时保留id和evaluator两个参数了。
内容的提问来源于stack exchange,提问作者Shai
相关产品推荐
相关产品推荐

