【问题标题】:Firebase storage access token gets removed when passed as a parameter to firebase dynamic link当作为参数传递给 firebase 动态链接时,Firebase 存储访问令牌会被删除
【发布时间】:2021-04-08 16:35:06
【问题描述】:

我在 firebase 存储中存储了一个音频文件,我想将其带有访问令牌的 url 作为参数传递给 firebase 动态链接。

我想让我的 file.component,ts 在 whatsapp、FB 等上公开分享,下面是我获取文件参数的代码

this.activatedRoute.queryParams.subscribe(params => {
      this.userName = params["user"];
      this.audioPath = params["audio"]; //firebase storage audio with access token
      this.docId = params["docId"];
      this.docTitle = params["title"];
      this.userId = params["userId"]; 
)

现在我想将以上所有参数作为链接传递给 firebase 动态链接 http.post 调用以获取短链接。

audio 参数包含到 firebase 存储访问 url 的 url 以及访问令牌,例如

https://firebasestorage.googleapis.com/v0/b/<site>/o/audio%2Fsong1-min.mp3?alt=media&token=xxxx-xxxxx-xxxx-xxxxx

当我将此音频变量传递给动态链接时,它会删除令牌并减少路径

https://firebasestorage.googleapis.com/v0/b/<site>/o/audio%2Fsong1-min.mp3

因此,当我收到短链接时,它会在 UI 上显示所有其他字段以及音频标签,但 src 已删除令牌,因此如果在 whats 应用程序、FB 等上共享,外部用户无法播放音频。

无论如何我可以发送这个 Firebase 存储访问 url,因为它位于动态链接中,以便播放音频。

【问题讨论】:

    标签: javascript angular firebase google-cloud-firestore firebase-dynamic-links


    【解决方案1】:

    我不相信这在您设计它的方式上是可能的,Firebase 动态链接会取出令牌以缩短链接,并且没有办法强制它不这样做。你可以做的是:

    1 - 使文件公开可读;

    2 - 在您的应用中单独获取和处理文件,而不使用 Firebase 动态链接;

    【讨论】:

      【解决方案2】:

      问题可能与您用于生成动态链接的方法有关。 firebase REST API 的 longDynamicLink 方法似乎排除了令牌,但 dynamicLinkInfo 似乎保留了它们,因此请尝试使用后者。

      使用带令牌的 longDynamicLink 方法时会弹出以下错误消息:

      { 警告代码:'UNRECOGNIZED_PARAM', 警告消息:“无法识别的参数‘令牌’。[https://firebase.google.com/docs/dynamic-links/create-manually#ddl_parameters]” }

      【讨论】:

        猜你喜欢
        • 2018-11-06
        • 2017-05-19
        • 1970-01-01
        • 2017-04-29
        • 1970-01-01
        • 2020-09-16
        • 2020-06-19
        • 2018-06-20
        • 2021-08-25
        相关资源
        最近更新 更多