Firebase 动态链接 REST API 返回 400 错误请求

Posted

技术标签:

【中文标题】Firebase 动态链接 REST API 返回 400 错误请求【英文标题】:Firebase dynamic links REST API returns 400 bad request 【发布时间】:2020-06-03 10:29:44 【问题描述】:

我正在尝试使用 firebase 为动态链接提供的 REST APInode 中为我的移动应用创建动态链接。

我关注了这些instructions

我正在使用axios 发送我的发帖请求 这是我的代码:

...
const link = await axios(
        method: 'post',
        url: 'https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=myApikey',
        headers: 
          'Content-Type' : 'application/json',
        ,
        data: 
            domainUriPrefix: 'https://threadsapp.page.link',
            link: `https://threads-1511.web.app/threads/$tweet.id_str`,
            iosInfo: 
              iosBundleId: 'com.bundleId',
              iosAppStoreId: '1512677811',
              iosIpadBundleId: 'com.bundleId',
            ,
            androidInfo: 
              androidPackageName: 'com.bundleId',
            ,
            socialMetaTagInfo: 
              socialTitle: `A thread by $tweet.user.name`,
              socialDescription: `$tweet.full_text`,
              socialImageLink: 'https://firebasestorage.googleapis.com/v0/b/threads-1511.appspot.com/o/playstore.png?alt=media&token=896f4fe6-2882-442e-b15c-3767d61b8a70',
            ,
            suffix: 
              option: 'SHORT',
            ,
        
      );
...

这是response

response: 
    status: 400,
    statusText: 'Bad Request',
    headers: 
      vary: 'X-Origin, Referer, Origin,Accept-Encoding',
      'content-type': 'application/json; charset=UTF-8',
      date: 'Wed, 03 Jun 2020 10:16:24 GMT',
      server: 'ESF',
      'cache-control': 'private',
      'x-xss-protection': '0',
      'x-frame-options': 'SAMEORIGIN',
      'x-content-type-options': 'nosniff',
      'alt-svc': 'h3-27=":443"; ma=2592000,h3-25=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"',
      'accept-ranges': 'none',
      connection: 'close',
      'transfer-encoding': 'chunked'
    ,

我的所有链接都使用文档中提到的https://http:// 方案:

提供的深层链接值至少必须以 http:// 或 https:// 方案开头。它还必须匹配在控制台中输入的任何 URL 模式白名单。否则,创建 API 将失败并返回 HTTP 错误代码 400。

即使我收到此错误,也非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

好像你错过了"dynamicLinkInfo": 部分,它在数据中应该看起来有点像这样

const link = await axios(
    method: 'post',
    url: 'https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=myApikey',
    headers: 
      'Content-Type' : 'application/json',
    ,
    data: 
        dynamicLinkInfo: 
            domainUriPrefix: 'https://threadsapp.page.link',
            link: `https://threads-1511.web.app/threads/$tweet.id_str`,
            iosInfo: 
              iosBundleId: 'com.bundleId',
              iosAppStoreId: '1512677811',
              iosIpadBundleId: 'com.bundleId',
            ,
            androidInfo: 
              androidPackageName: 'com.bundleId',
            ,
            socialMetaTagInfo: 
              socialTitle: `A thread by $tweet.user.name`,
              socialDescription: `$tweet.full_text`,
              socialImageLink: 'https://firebasestorage.googleapis.com/v0/b/threads-1511.appspot.com/o/playstore.png?alt=media&token=896f4fe6-2882-442e-b15c-3767d61b8a70',
            
        ,
        suffix: 
          option: 'SHORT',
        ,
    
  );

【讨论】:

以上是关于Firebase 动态链接 REST API 返回 400 错误请求的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 动态链接 REST API 中未记录的参数

如何为 Firebase 项目配置动态链接?

Firebase Auth REST API - 使用电子邮件/密码登录不会返回刷新令牌

Firebase Rest Api 从我的模型类中读取数据返回 null [重复]

如何通过 HTTP REST API 访问我的 Firebase 数据库?

如何通过 REST API 读取 Firebase 有序数据?