In this git issue AngularFire禁用了与$createUser
相关联的自动登录功能。 (The docs已过时。)
那么创建用户然后将其登录的最佳实践/最简洁方法是什么?
app.factory('Auth', function($firebaseSimpleLogin, FIREBASE_URL, $rootScope) {
var ref = new Firebase(FIREBASE_URL);
var auth = $firebaseSimpleLogin(ref);
var Auth = {
register: function (user) {
return auth.$createUser(user.email, user.password);
},
login: function (user) {
return auth.$login('password', user);
},
...
注意:$createUser
返回md5哈希,但$login
使用明文密码。
我是承诺的新手。谢谢!
答案 0 :(得分:1)
我没有意识到加藤的意思。但是现在我理解了承诺,解决方案非常简单:
register: function (user) {
return auth.$createUser(user.email, user.password)
.then(function() {
return auth.$login('password', user);
});
},
答案 1 :(得分:0)
我认为应该这样做。你必须使用q或者注入angular。$ q。
app.factory('Auth', function($firebaseSimpleLogin, FIREBASE_URL, $rootScope) {
var ref = new Firebase(FIREBASE_URL);
var auth = $firebaseSimpleLogin(ref);
var deferred = Q.defer(); // from Q lib
// var deferred = $q.defer(); //angularjs q
var Auth = {
register: function (user) {
auth.$createUser(user.email, user.password)
.then(function(result) {
deferred.notify('user created.'); // optional notify progress
return auth.$login('password', user); // return a new promise for chaining.
},
function(reason) {
// createUser failed
deferred.reject(reason);
})
.then(function(result) {
// resolve the login promise return from above
deferred.resolve(result);
},
function(reason) {
// login failed
deferred.reject(reason);
});
return deferred;
},
login: function (user) {
return auth.$login('password', user);
},
...