【问题标题】:Firebase Auth – State Update on emailVerifiedFirebase 身份验证 – 电子邮件状态更新已验证
【发布时间】:2020-09-22 20:15:16
【问题描述】:

长期以来,我一直忽略了电子邮件/密码注册过程和必要的电子邮件验证,只使用了非常基本的功能来开始并在此基础上进行构建。但现在我已经到了无法避免使用更多生产级电子邮件/密码注册过程的地步。目前我正在使用这些 Firebase 服务:Authentication(仅限电子邮件/密码)、FirestoreCloud Functions 与 react-native 应用程序。 p>

当用户成功注册(已登录但没有经过验证的电子邮件!)时,React Native 应用程序将不会提供功能,直到用户验证了他/她的电子邮件。注册后,客户端将立即发送一封带有验证链接的电子邮件(通过默认的 Firebase 服务器),用户可以通过单击该链接来验证他/她的电子邮件。

问题:如何应对 emailVerified 更改或任何其他在电子邮件通过验证时触发的事件?

我现在整天都在寻找可行的解决方案。这些是我的方法:

  • 使用所有验证链接都链接到的您自己的网站(尝试过,但在我第一次尝试时不起作用)
  • 在电子邮件验证链接中使用 actionCodeSettings 来重定向用户并让客户端重新加载其组件
  • 使用云消息传递并通知客户有关电子邮件验证状态的更改
  • 调用云函数(从外部服务器)更新客户端订阅的 Firestore 中的 tmp 文档
  • 重载()/循环

感谢所有 cmets、有用的链接等!

【问题讨论】:

    标签: firebase google-cloud-firestore firebase-authentication


    【解决方案1】:

    Firebase SDK 中有一个方法:isEmailVerified(),它告诉用户是否验证了电子邮件。

    对于 react native,我找到了简单的文档:Email Verified。在应用程序启动时,您可以检查用户是否验证了电子邮件,然后进行相应的更改!

    编码愉快!

    【讨论】:

    • 感谢您的帮助@s_o_m_m_y_e_e!我阅读了该方法,但找不到用于 nodejs/web 的方法。 User 上的属性 emailVerified 不仅在 react-native-firebase 中可用,而且在 Firebase Nodejs SDK 中也可用,Auth 上的 onAuthStateChanged 和另一个观察者 - 我正在使用它,但观察者没有开火emailVerified 更改。在循环中使用reload() 可以处理(对于许多读取操作)。客户端可能在前台,用户可以在他/她的电脑上打开链接,在这种情况下,简单的应用重新加载将无法完成这项工作。
    • 您可以为用户提供某种按钮,用户在验证电子邮件后应单击该按钮。单击该按钮,您可以检查电子邮件是否已通过验证。 (对不起,我对 react 或 nodejs 不太熟悉,但只是给出一个整体想法:-)
    • 实际上,我正是在使用这个想法 ;) 但它只是为开发人员实现的,在我看来,它不是一个用户友好和减少用户体验的解决方案。感谢您的评论!
    • 我建议你考虑一下,为此再问一个问题。
    猜你喜欢
    • 2020-11-22
    • 2018-02-10
    • 2018-07-09
    • 2023-03-18
    • 2021-03-26
    • 1970-01-01
    • 2018-11-26
    • 2018-09-17
    • 2019-07-13
    相关资源
    最近更新 更多