firebase - 来自服务器端的 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 在浏览器中工作,但在服务器端失败。将不胜感激任何想法是什么问题。
解决方案
这是因为对该 URL 的调用不会返回您可以检查的响应,例如 REST API 端点的响应response.data.success
。
正如您将在此处看到的,此 URL 应该用于打开一个网页,您将在其中:
- 获取作为 QueryString 参数传递的值(例如
mode
或oobCode
) - 从网页调用 Firebase JavaScript SDK 的一些方法,例如
applyActionCode()
电子邮件验证。
您也许可以从服务器模仿此操作,但我从未尝试过。
推荐阅读
- c++ - 我想重载运算符'='但重载后运算符不会将正确的信息传递给对象
- c++ - 使用 boost 将几何体切割成碎片
- google-maps - 谷歌地图可以在不安装应用程序的情况下向用户发送推送通知吗?
- python - 将 Sqlite 查询结果设置为变量
- java - 无法从结果集中检索所有行
- powerbi - 滚动 3 个月的 DAX
- c# - UWP Webview 中的 Microsoft 广告
- azure-files - twilio + Azure File Stogare = 资源不支持指定的 Http 动词
- azure - 有什么方法可以限制 Azure Marketplace 的访问/购买?
- r - 在 R 正则表达式的字符类中使用速记字符类