升级到Firebase 1.1:无法从createUser()获取user.uid

时间:2014-10-20 16:00:51

标签: angularjs firebase firebasesimplelogin

使用Firebase 1.0.21和$ firebaseSimpleLogin - 注册用户 - 我做了类似的事情:

app.controller('AuthCtrl', function ($scope, $firebase, $firebaseSimpleLogin) {
  var ref = new Firebase(MY_FIREBASE_URL);
  var auth = $firebaseSimpleLogin(ref);

  $scope.register = function (valid) {
    // user contains email ad password fields, from my view
    auth.$createUser($scope.user.email, $scope.user.password).then(function (auth) {
      // auth.user.uid is defined, here; for example: 'simplelogin:13'
      // ...
    });
  };
};

使用Firebase 1.1时,不推荐使用$ firebaseSimpleLogin,并将其功能纳入Firebase核心。
所以我 - 信任我:-) - 改变代码:

app.controller('AuthCtrl', function ($scope, $firebase) {
  var ref = new Firebase(MY_FIREBASE_URL);
  var auth = $firebase(ref);

  $scope.register = function (valid) {
    // user contains email ad password fields, from my view
    auth.$createUser($scope.user.email, $scope.user.password).then(function (auth) {
      // ...
    });
  };      
};

虽然,我得到$ createUser()作为' undefined' ...
所以我尝试了:

app.controller('AuthCtrl', function ($scope, $firebase) {
  var ref = new Firebase(MY_FIREBASE_URL);
  var auth = $firebase(ref);

  $scope.register = function (valid) {
    // user contains email ad password fields, from my view
    ref.createUser({
      email: $scope.user.email,
      password: $scope.user.password
    }, function(err) {
      if (!err) {
        // ??? how do I access uid from here ???
      }
    });
  };      
};

我确实希望ref.createUser()应该返回一个promise,就像auth。$ createUser一样,但它没有。

1 个答案:

答案 0 :(得分:1)

AngularFire依赖于“firebase”:“1.0.x”和“firebase-simple-login”:“1.6.x”,因此,在AngularFire中尚未实现Firebase核心的身份验证方法。 / p>

您有两种选择:

不升级Firebase并继续使用版本1.0.x与AngularFire和Firebase简单登录

或者,将Firebase升级到1.1但是您必须删除AngularFire和Firebase简单登录,并且只使用Firebase方法。由于你使用的是AngularJS,也许你需要使用$ q服务将Prombase方法包含在promises函数中,你需要使用$ scope。$ apply在某些情况下应用,因为取决于你在做什么Angular不知道$ scope已更改,并未触发这些更改。

$ apply API参考:https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope

Firebase 1.1 API参考:https://www.firebase.com/docs/web/api/