Angularjs 升级到Firebase 1.1:can';无法从createUser()获取user.uid
使用Firebase 1.0.21和$firebaseSimpleLogin-注册用户-我做了如下操作: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
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?如果会的话,我肯定会等的。。。