使用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一样,但它没有。
答案 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/