我目前正在设置一些 firebase-auth。
对于恢复密码和验证电子邮件过程,Firebase 使用一些默认页面,用户通过电子邮件重定向到这些页面,然后使用
url
代表 continueUrl
返回我的网站。
我想直接在我这边进行电子邮件的恢复和确认。
所以我明白恢复的步骤是
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();
}, []);
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
吗?或者我还缺少其他功能吗?还是不可能?
根据有关自定义电子邮件操作处理程序的文档,请使用
applyActionCode
。
- 通过致电
处理电子邮件地址验证。例如: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 上找到。有些方法是伪代码,应该更新以支持您正在使用的框架。