首页 > 解决方案 > 来自服务器端的 Firebase 电子邮件验证

问题描述

我有一个指向 Firebase 中默认电子邮件验证功能的链接。在浏览器中使用此链接可以正常工作,但是在服务器端使用以下代码时会失败:

  try {
    const url = `https://example.com/__/auth/action?mode=verifyEmail&oobCode=${oobCode}&apiKey=${apiKey}&lang=en`;
 
    const response = await axios.get(url);
    
    if (response.data.success) {
      return next();
    } else {
        return next(new ErrorResponse("Failed email verification", FORBIDDEN));
    }
  } catch (error) {
    return sendFailedWithErr(res, error.message);
  }

当我复制服务器端使用的 URL 时,完全相同的 URL 在浏览器中工作,但在服务器端失败。将不胜感激任何想法是什么问题。

标签: firebasefirebase-authenticationemail-verification

解决方案


这是因为对该 URL 的调用不会返回您可以检查的响应,例如 REST API 端点的响应response.data.success

正如您将在此处看到的,此 URL 应该用于打开一个网页,您将在其中:

  1. 获取作为 QueryString 参数传递的值(例如modeoobCode
  2. 从网页调用 Firebase JavaScript SDK 的一些方法,例如applyActionCode()电子邮件验证。

您也许可以从服务器模仿此操作,但我从未尝试过。


推荐阅读