我有一个登录表单,用户可以使用 Firebase 的电子邮件链接进行身份验证。之后,在 gmail 中,用户单击链接并导航到应该对他进行身份验证的某个路线,但这种情况没有发生。我的 sendSignInLinkToEmail 逻辑正确吗?我还确保我已允许使用电子邮件链接登录。
表格
export const SignIn = () => {
return (
<Formik
onSubmit={(values, { setSubmitting }) => {
sendSignInLinkToEmail(auth, values.email, actionCodeSettings)
.then(() => {
window.localStorage.setItem("emailForSignIn", values.email);
setAlertLabel("A sign-in link has been sent to your email");
})
.catch(() =>
setAlertLabel(
"Something went wrong while sending the sign-in link. Please try again later"
)
);
setSubmitting(false);
}}
>
{({ values, handleSubmit, handleChange }) => {
return (
...
);
}}
</Formik>
);
};
配置
const actionCodeSettings = {
url: "http://localhost:3000",
handleCodeInApp: true,
};
编辑:
请确认以下事项
url:要嵌入的深层链接以及要传递的任何其他状态 沿着。必须将链接的域添加到 Firebase 控制台列表中 授权域名,可以通过登录找到 方法选项卡(身份验证 -> 设置)。
在测试时您可能还想查看 does-the-sendsigninlinktoemail-function-work-with-a-firebase-emulator