0

使用 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() 为'未定义'......
所以我尝试了:

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() 应该返回一个承诺,就像 auth.$createUser 所做的那样,但事实并非如此。
所以,我不知道如何获取我的新用户 uid,将其插入到我的用户扩展信息对象数组中......

4

1 回答 1

1

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

你有两个选择:

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

或者,将 Firebase 升级到 1.1,但您必须删除 AngularFire 和 Firebase 简单登录,并且只使用 Firebase 方法。由于您使用的是 AngularJS,也许您需要使用 $q 服务将 Firebase 方法包装在带有 Promise 的函数中,并且在某些情况下您需要使用 $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/

于 2014-10-24T18:07:38.417 回答