Firebase REST API 不使用 React Native 上的 Fetch API 响应常见错误代码

Posted

技术标签:

【中文标题】Firebase REST API 不使用 React Native 上的 Fetch API 响应常见错误代码【英文标题】:Firebase REST API doesn't respond with common error codes using Fetch API on React Native 【发布时间】:2022-01-21 14:52:21 【问题描述】:

Firebase API doesn't respond with common error codes using Axios on react native 这里也有类似的讨论,但那家伙正在使用 Axios。我想使用 Fetch API,并希望在当前情况下使用此 API 有类似的解决方案。

问题是当我从 Firebase REST API 收到错误时,响应的状态文本为空。我只有状态码。

如果我将使用 Axios 使用相同的 url 和选项发出相同的请求,我将使用 console.log(error.response.data.error.message) 得到 Firebase API 违反的错误描述(如 TOKEN_EXPIRED、USER_DISABLED、USER_NOT_FOUND、INVALID_REFRESH_TOKEN、MISSING_REFRESH_TOKEN 等)

如何使用 Fetch API 实现相同的输出?

 const response = await fetch(url, 
        method: 'POST',
        headers:  'Content-Type': 'application/json' ,
        body: bodyString
    );

if (response.ok) 
    const payload = await response.json();
    return payload as HttpResponse;
 else 
    throw new Error(`Server error: $response.statusText. Status: $response.status`);

【问题讨论】:

请编辑您的问题以包括以下内容:1) 您返回的状态代码是什么? 2)url的值是多少? 3)bodyString的值是多少? await response.text() 这能回答你的问题吗? How to get the actual error from express instead of status 500 in React on failed fetch in POST method? @FrankvanPuffelen 我已更新票证以使其更清晰,但 url 和 bodyString 的值无关紧要。关键是我希望得到一个错误,但有问题的描述。 【参考方案1】:

我不知道我是怎么错过检查这个的。 解决办法:await response.text()

【讨论】:

以上是关于Firebase REST API 不使用 React Native 上的 Fetch API 响应常见错误代码的主要内容,如果未能解决你的问题,请参考以下文章

使用邮件和密码通过 REST API [Firebase] 进行身份验证

使用来自 REST API 的令牌的 Firebase 登录

通过 REST API 创建 Firebase 控制台动态链接

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

从 REST API 发送时,Firebase 推送通知在后台不起作用

在客户端级别(而非最终用户级别)保护 Firebase REST API