我有一个 Firebase 支持的 React Native 应用程序,允许客户通过电子邮件/密码、Google ID 或 Apple ID 登录。它主要工作正常,但我注意到一个用户体验问题,该问题源于
signInWithCredential
方法的行为,该方法在首次登录时隐式创建新用户。
您可以通过调用 createUserWithEmailAndPassword 方法或使用联合身份提供商(例如 Google Sign-In 或 Facebook Login)首次登录用户来在 Firebase 项目中创建新用户。这看起来很方便,意味着我的“注册”或“注册”功能与我的“登录”功能基本相同。https://firebase.google.com/docs/auth/web/manage-users#create_a_user
但是从客户的角度来看,这很令人困惑。例如。如果他们进入应用程序并忘记使用电子邮件/密码进行注册,然后单击“使用 Google 登录”,在 OAuth 弹出窗口中单击“接受”,然后他们将登录到以前从未使用过的全新帐户,并且当然,他们之前的数据/历史记录/购买都不存在。
如果新客户通过 OAuth 登录,我希望收到 auth/user-not-found
错误,如 在此处的 API 文档中列出,以便我可以呈现“您没有帐户”的“正常”UX有了这些凭据,请先注册”或类似的内容以施加一些摩擦并帮助用户意识到他们走错了路。即我希望注册完全独立于登录,并防止创建意外的虚假帐户。 顺便说一句,我了解(并且已经测试过),如果客户随后使用共享已注册的相同电子邮件地址的第二个提供商,那么 Firebase 会采取一些巧妙的措施来迁移或统一帐户。但我无法确定客户的 Google ID 是否与他们在创建电子邮件/密码帐户时使用的电子邮件相匹配(例如工作与个人或其他原因),因此仍然会存在重复/虚假帐户。还有
“每个电子邮件一个帐户”选项 可以对此进行调整)
我实际上觉得奇怪的是,似乎没有任何关于这一点的讨论,因为缺乏“不自动注册”标志阻止了典型的用户体验支持“这里是新的?注册”入门与“新在这里注册”之间的明显区别. 现有客户的“有帐户吗?登录”。所以也许我错过了一些明显的东西。