firebase - 在 Firebase 中创建临时匿名用户

标签 firebase firebase-security

我正在尝试自动生成我可以保存数据的用户帐户,然后将它们提升为正确的用户名/密码帐户。关于做到这一点的最佳方法的任何想法?

我不清楚是否可以将身份验证提供程序从匿名切换为密码。

最佳答案

您可以先创建一个 anonymous login使用 Firebase,然后将该身份验证“uid”键存储到某种 session 或 cookie(取决于您使用的框架)。虽然客户端是匿名的,但您可以将保存的数据链接到这个匿名的“uid”。

要在用户登录后将数据传输给用户,您需要使用 Firebase 的 onAuth()听众。这将在用户的身份验证数据更改时通知您。获得新的经过身份验证的 uid 后,您可以将存储的数据链接到该新 uid 并删除您的匿名 session 。

这是 Firebase 文档中修改后的示例:

var firebaseRef = new Firebase('https://samplechat.firebaseio-demo.com');
firebaseRef.onAuth(function(authData) {
  if (authData) {
    // Client is logged in, so check if it's anonymous or a real user

    if (authData.provider === 'anonymous') {
      // user is anonymous
      // save authData.uid to some local session info, to keep track of data
    } else {
      // user is logged in
      // transfer any data that you had stored from the anonymous session to 
      // this new authUser.uid

  } else {
    // Client is unauthenticated

    // This would be a good spot to create the anonymous login
    firebaseRef.authAnonymously(function(error, authData) {
      if (error) {
        // handle login failure
      } else {
        // you are now anonymously logged in, but you really don't need to do anything
        // here, because your onAuth() listener is already going to catch this auth change
      }
  }
});

当用户更改他们的身份验证信息时,Firebase 不会告诉您之前的 uid 是什么,因此您确实需要将该匿名 uid 存储在某处。您也可以在不创建匿名登录的情况下完成整个操作,只需在用户登录之前存储 session 数据,但匿名登录提供了更多的一致性。

关于firebase - 在 Firebase 中创建临时匿名用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19897994/

相关文章:

ios - 点击链接后 Firebase 电子邮件身份验证无法打开 iOS 应用程序

ios - 获取 Firebase 列中的所有数据

java - 我可以将 HashSet 存储到 Firestore 文档 (Java)

firebase - 有没有办法对 Firebase 用户创建和/或密码重置进行电子邮件确认?

java - 实时数据库 Firebase 安全规则问题

firebase - 设置不同的声音通知

swift - 将警报从一个类显示到当前查看的 Swift Controller 中

javascript - 如何保护 Firebase 数据库中用户和管理员的访问安全?

firebase - Firestore 安全规则中嵌套映射中的引用字段

firebase - 如何只允许一个管理员用户编写 Firebase 数据库?