当前位置: 首页 > 知识库问答 >
问题:

Firebase/AngularFire创建用户信息

易超
2023-03-14

我正在使用AngularFire创建一个新用户。但是当我注册用户时,我还会询问名字和姓氏,并在注册后添加该信息。

$firebaseSimpleLogin(fbRef).$createUser($scope.signupData.email, $scope.signupData.password).then(function (user) {
  // Add additional information for current user
  $firebase(fbRef.child('users').child(user.id).child("name")).$set({
    first: $scope.signupData.first_name,
    last: $scope.signupData.last_name
  }).then(function () {
    $rootScope.user = user;
  });
});

上述代码起作用,它创建节点fin Firebase(users/user.id/…)。

问题所在

当我用新用户登录时,我会得到用户的默认信息:id、电子邮件、uid等,但没有名字。如何将该数据自动关联到用户?

共有2个答案

吕越彬
2023-03-14

我在这方面也有同样的问题,觉得没有人真正有一个明确的答案(两年过去了)。但以下是此类服务的大致结构:

app.factory('Auth', function(FURL, $firebaseAuth, $firebaseObject, $rootScope, $window){
​
  var ref = new Firebase(FURL);
  var auth = $firebaseAuth(ref);
​
  var Auth = {
    user: {},
​
    login: function(user){
      return auth.$authWithPassword({
        email: user.email,
        password: user.password
      });
    },
​
    signedIn: function(){
      return !!Auth.user.provider;
    },
​
    logout: function(){
      return auth.$unauth;
    }
  };
​
  // When user auths, store auth data in the user object
  auth.$onAuth(function(authData){
    if(authData){
      angular.copy(authData, Auth.user);
      // Set the profile

      Auth.user.profile = $firebaseObject(ref.child('profile').child(authData.uid));
      Auth.user.profile.$loaded().then(function(profile){
        $window.localStorage['gym-key'] = profile.gym.toString();
      });
    } else {
      if(Auth.user && Auth.user.profile){
        Auth.user.profile.$destroy();
      }
​
    }
  });
​
  return Auth;
});
融渊
2023-03-14

你不能。Firebase通过将登录详细信息存储在自己的数据存储中来隐藏登录管理的复杂性。这个过程对你的应用程序的伪造一无所知,这意味着它不知道你是否或在哪里存储了任何额外的用户信息。为了方便起见,它会返回它确实知道的数据(id、uid、电子邮件、md5_hash、提供商、Firebase AuthToken)。

然后由你的应用程序获取[u]id并获取你需要的任何特定于应用程序的用户信息(如名字、姓氏)。对于Angular应用程序,您希望有一个UserProfile服务,一旦您获得认证成功广播,该服务将检索您正在查找的数据。

此外,在您的代码片段中,考虑更改

.child(user.id) 

.child(user.uid) 

如果您以后支持Facebook/Twitter/Persona身份验证,这将非常有用。uid看起来像“simplelogin:1”-它有助于避免提供者之间不太可能但可能发生的id冲突。

 类似资料:
  • 我是Firebase的新手。最近,我试图将用户保存到Firebase中,但我做不到。当我生成APK并将其运行到真实设备(而不是模拟器)上时,新用户不会将其添加到Firebase中。此外,没有显示任何错误。任务正确执行并转到OTPActivity。这是我的完整代码: 公共无效保存用户(){ 请帮帮我。提前谢谢。

  • 我将在我的Android项目中使用Firebase,我想用函数对用户进行身份验证。 我将从Admin SDK(Python)生成令牌,并将其返回给用户,用户将使用该令牌进行身份验证。 我的问题是; 1 - 如果有人使用相同的uid或者它总是唯一的,他可以创建与我相同的令牌吗? 2- 我是说如果有人得到授权。uid,但不是令牌,他可以设置身份验证。客户端到身份验证变量中的uid? 谢谢你的信息和答案

  • 当使用电子邮件/密码创建新用户时,是否可能禁用自动登录。 我看到其他人问这个问题与JS和swift有关,但似乎找不到任何具体的android相关信息。我试图实现与这个人一样的事情,但用android 感谢任何帮助

  • 我是新来的。 我目前正在开发一个应用程序,使用Vue.jsFirebase身份验证、Firebase实时数据库和Firebase云功能作为后端。应用程序必须包含一个管理员帐户的功能之一,该帐户可以为其他人创建帐户。创建后,新用户会收到一封电子邮件,其中包含登录名和登录密码。 因为注册方法(https://firebase.google.com/docs/auth/web/password-auth

  • 主要内容:创建用户的步骤在企业开发中会为每位程序员、测试人员等相关人员分配一个账号,用户通过使用svn客户端连接svn服务时需要输入账号和密码,svn服务对账号和密码进行校验,输入正确可以继续访问,当用户访问仓库下某个目录时,svn服务对用户进行授权,如果用户拥有该目录的访问权限方可访问。 判断账号和密码输入是否正确的过程即认证过程。 判断用户是否拥有目录的读/写权限时即授权过程。 创建用户的步骤   查看已创建的用户:

  • 接口说明 创建用户 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/user/1.0.0/create 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 username string form 是 用户名 password string form 是 密码 phone string form 是 手机