Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 升级到Firebase 1.1:can';无法从createUser()获取user.uid_Angularjs_Firebase_Firebasesimplelogin - Fatal编程技术网

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

Angularjs 升级到Firebase 1.1:can';无法从createUser()获取user.uid,angularjs,firebase,firebasesimplelogin,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 (val

使用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 core。
所以我——我很信任——)——这样修改了代码:

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,如何将其插入我的用户扩展信息对象数组…

AngularFire依赖于“firebase”:“1.0.x”和“firebase简单登录”:“1.6.x”,因此,firebase核心上的身份验证方法尚未在AngularFire中实现

您有两个选择:

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

或者,将Firebase升级到1.1,但是您必须删除AngularFire和Firebase Simple Login,并且只使用Firebase方法。由于您使用的是AngularJS,可能您需要使用$q服务将Firebase方法包装在带有承诺的函数中,并且您需要使用$scope。$在某些情况下适用,因为Angular不知道$scope发生了更改,也没有触发这些更改

$apply API引用:$rootScope.Scope


Firebase 1.1 API参考:

这个问题(或其答案)与您之前的问题有什么不同:?弗兰克,它非常不同。。。在上一个问题中,我问如何在没有成功回调的情况下使用身份验证方法(
authWithOAuthRedirect
)(
onAuth()
是答案)。现在我在问如何使用
createUser
功能。。。是否有
onUserCreated()
方法?:-)啊,好的,那么这就是新用户注册的时候了?我应该意识到基于
$scope.register
:-)我懂了。AngularFire的下一个版本是否完全支持Firebase 1.1?如果会的话,我肯定会等的。。。