Firebase无密码登录-是否有一种方法来生成一个电子邮件链接,不过期后第一次使用?



我已经按照Firebase文档在我的网站上使用电子邮件链接实现了无密码认证:

  • 前端:链接-角
  • 后端
  • : link - Python

但是,即使函数generate_sign_in_with_email_link()生成的链接第一次工作良好,它也只能工作一次:

from firebase_admin import auth
link = f'http://localhost:4200/login'
dynamic_link_domain = 'test.page.link'
action_code_settings = auth.ActionCodeSettings(
url=link,
dynamic_link_domain=dynamic_link_domain
)
link = auth.generate_sign_in_with_email_link("test@gmail.com", action_code_settings)

当用户尝试第二次点击时,我得到这个错误:

操作码无效。如果代码格式错误、过期或已被使用,则可能发生这种情况。

这不是我想要的行为。我在寻找一种"神奇的联系"。用户可以多次点击,仍然可以登录到我的网站。这是可能的Firebase吗?要应用的正确配置是什么?

但是,即使由函数generate_sign_in_with_email_link()生成的链接第一次工作良好,它也只能工作一次。

这是预期的行为。当您向用户发送包含身份验证链接的电子邮件时,一旦使用该链接,该链接将过期。为什么?所以其他用户不能使用它。如果您尝试再次使用它,则会出现该错误信息。

我在找"魔法link"用户可以多次点击,仍然可以登录到我的网站

要实现这一点,您应该考虑使用另一种类型的身份验证。例如,电子邮件和密码,或任何其他提供商,如谷歌,Facebook等。通过这种方式,您将始终能够验证到相同的帐户。 然而,有一个解决方案,您也可以使用自定义的令牌但@Dharmaraj已经提到在他的评论中,不会如此安全。

最新更新