使用 verifyPasswordResetCode 在 firebase 上验证电子邮件

问题描述 投票:0回答:1

我目前正在设置一些 firebase-auth。

对于恢复密码和验证电子邮件过程,Firebase 使用一些默认页面,用户通过电子邮件重定向到这些页面,然后使用

url
代表
continueUrl
返回我的网站。

我想直接在我这边进行电子邮件的恢复和确认。

所以我明白恢复的步骤是

  1. 转到 firebase 并将电子邮件的默认 URL 更改为指向我的域
  2. 在代码中检查
    oobCode
 useEffect(() => {
   async function verifyToken() {
     try {
       const code = searchParams.get('code');
       if (code) {
         const email = await verifyPasswordResetCode(getAuth(), code);
         form.setFieldValue('email', email);
         form.setFieldValue('oobCode', code);
       }
       throw new Error('Missing oobCode');
     } catch (e) {
       setError(e);
     } finally {
       setVeryifing(false);
     }
   }

   setVeryifing(true);
   verifyToken();
 }, []);
  1. 确认重置密码
  const submitHandler = useCallback(
    async ({ oobCode, password }: FormType) => {
      setLoading(true);
      try {
        await confirmPasswordReset(getAuth(), oobCode, password);
        setPasswordChange(true);
      } catch (e) {
        setError(e);
      } finally {
        setLoading(false);
      }
    },
    [setLoading]
  );

好的,现在,对于电子邮件验证,仍然有一个

oobCode
需要我们确认,但我找不到任何有关如何验证它的信息。即使在这种情况下我也应该使用
verifyPasswordResetCode
吗?或者我还缺少其他功能吗?还是不可能?

firebase firebase-authentication
1个回答
0
投票

根据有关自定义电子邮件操作处理程序的文档,请使用

applyActionCode

  1. 通过致电
    applyActionCode
    处理电子邮件地址验证。例如:
function handleVerifyEmail(auth, actionCode, continueUrl, lang) {
  // Localize the UI to the selected language as determined by the lang
  // parameter.
  // Try to apply the email verification code.
  applyActionCode(auth, actionCode).then((resp) => {
    // Email address has been verified.

    // TODO: Display a confirmation message to the user.
    // You could also provide the user with a link back to the app.

    // TODO: If a continue URL is available, display a button which on
    // click redirects the user back to the app via continueUrl with
    // additional state determined from that URL's parameters.
  }).catch((error) => {
    // Code is invalid or expired. Ask the user to verify their email address
    // again.
  });
}

在上面的片段中:

  • auth
    getAuth()
    返回的 Firebase Auth 实例。
  • actionCode
    oobCode
    GET 参数。
  • continueUrl
    lang
    是它们各自的 GET 参数。

您应该考虑遵循文档并酌情实施对

resetPassword
recoverEmail
的支持。

注意:完整的代码示例可在 Firebase Snippets GitHub 上找到。有些方法是伪代码,应该更新以支持您正在使用的框架。

© www.soinside.com 2019 - 2024. All rights reserved.