这是我的控制器。注册功能工作正常。登录没有,但我的问题是,怎样才能让我的数据为每个用户?例如,我有用户john@doe.cz,UID是simplelogin:29,ID 29.每个用户都有自己的帐户,类别等,那么,什么是最好的做法还是我怎样才能做到这一点?我想制作own-firebase.firebaseio.com/users/(id,UID,或某种散列)/类别或帐户。
app.controller('AuthCtrl',函数($范围,$ ionicModal,$火力点,的DataFactory){ VAR AUTH =新FirebaseSimpleLogin(usersAuth,功能(错误,用户){ 如果(错误){ //尝试登录时发生错误 的console.log(错误); }否则如果(用户){ 与火力地堡//用户认证 的console.log('用户名:'+ user.uid +',提供:'+ user.provider); }其他{ //用户被注销 } }); $ ionicModal.fromTemplateUrl('意见/ auth /中register.html',函数(模式){ $ scope.registerModal =模态; },{ 适用范围:$范围, 动画:滑入式 }); $ ionicModal.fromTemplateUrl('意见/ auth /中的login.html',函数(模式){ $ scope.loginModal =模态; },{ 适用范围:$范围, 动画:滑入式 }); $ scope.registerModalShow =功能(){ $ scope.registerModal.show(); }; $ scope.registerModalHide =功能(){ $ scope.registerModal.hide(); }; $ scope.loginModalShow =功能(){ $ scope.loginModal.show(); }; $ scope.loginModalHide =功能(){ $ scope.loginModal.hide(); }; $ scope.newUser =功能(用户){ $ scope.userEmail = user.email; $ scope.userPassword = user.password的; auth.createUser($ scope.userEmail,$ scope.userPassword,功能(错误,用户){ 如果(!错误){ 的console.log(用户UID:'+ user.uid +',电子邮件:+ $ scope.userEmail +'用户名:'+ user.id +',用户密码:'+ $ scope.userPassword); } }); $ scope.userRef =新的火力地堡(URL +'/用户'+ $ scope.userPassword); $ scope.registerModalHide(); user.email =''; user.password的=''; 警报($ scope.userId); }; $ scope.userLogin =功能(用户){ $ scope.userLoginEmail = user.email; $ scope.userLoginPassword = user.password的; auth.login('密码',{ 电子邮件:user.email, 密码:user.password的 }); $ scope.loginModalHide(); user.email =''; user.password的=''; };});
解决方案
我用下面的方法来创造为每个用户自己的数据:
我创建一个新的配置文件,这可能会对我想要的任何细节,当有人在我的应用程序的第一次登录:
$ scope.login =功能(){//这个逻辑处理增加新用户到我的火力点。 $ rootScope.auth。$登录('叽叽喳喳')//因为我使用Twitter登录。 。然后(功能(用户){ $ scope.myFirebaseRef $子(user.uid)$集({名称:user.displayName})。 //创建新的配置文件。 的console.log(欢迎+ user.displayName +!); $ state.go('家'); },功能(错误){ consolle.log(错误); } );}
然后,我执行此解析
当我改变一个观点:
解析:{//基本上,它要求一个登录的用户,并等待一个承诺之前装入控制器。 会议:函数($ rootScope){ 返回$ rootScope.auth。$ getCurrentUser()。然后(功能(用户){ 如果(用户){ $ rootScope.someCurrentUser = user.uid; } }); }}
最后,我用 $ rootScope.someCurrentUser
以创建一个个性化的会话:
.controller('sessionController',['$ rootScope','$火力',函数($ rootScope,$火力点){ VAR someUserRef =新的火力地堡('https://myfirebase.firebaseio.com/'+ $ rootScope.someCurrentUser); $ scope.sessionRef = $火力(someUserRef); //使用/东西在您的个性化会话。}]);
我希望这种方法给你一些想法创建每个用户的会话/自己的数据。
This is my controller. Register function works ok. Login doesn't, but my question is, how can I make data for each user? For example, I have user john@doe.cz, UID is simplelogin:29, ID 29. Each user will have own accounts, categories, etc. So what is the best practice or how can I make it happen? I think about making own-firebase.firebaseio.com/users/(id, uid, or some kind of hash)/categories or accounts.
app.controller('AuthCtrl', function($scope, $ionicModal, $firebase, DataFactory){
var auth = new FirebaseSimpleLogin(usersAuth, function(error, user) {
if (error) {
// an error occurred while attempting login
console.log(error);
} else if (user) {
// user authenticated with Firebase
console.log('User ID: ' + user.uid + ', Provider: ' + user.provider);
} else {
// user is logged out
}
});
$ionicModal.fromTemplateUrl('views/auth/register.html', function(modal) {
$scope.registerModal = modal;
}, {
scope: $scope,
animation: 'slide-in-up'
});
$ionicModal.fromTemplateUrl('views/auth/login.html', function(modal) {
$scope.loginModal = modal;
}, {
scope: $scope,
animation: 'slide-in-up'
});
$scope.registerModalShow = function() {
$scope.registerModal.show();
};
$scope.registerModalHide = function() {
$scope.registerModal.hide();
};
$scope.loginModalShow = function() {
$scope.loginModal.show();
};
$scope.loginModalHide = function() {
$scope.loginModal.hide();
};
$scope.newUser = function(user){
$scope.userEmail = user.email;
$scope.userPassword = user.password;
auth.createUser($scope.userEmail, $scope.userPassword, function(error, user) {
if (!error) {
console.log('User UID: ' + user.uid + ', Email: ' + $scope.userEmail + ', User ID: ' + user.id + ', User Password: ' + $scope.userPassword);
}
});
$scope.userRef = new Firebase(url + '/users' + $scope.userPassword);
$scope.registerModalHide();
user.email = '';
user.password = '';
alert($scope.userId);
};
$scope.userLogin = function(user){
$scope.userLoginEmail = user.email;
$scope.userLoginPassword = user.password;
auth.login('password', {
email: user.email,
password: user.password
});
$scope.loginModalHide();
user.email = '';
user.password = '';
};
});
解决方案
I'm using the following approach to create "own data for each user":
I create a new profile, which could have whatever detail I want, when someone logs in my app for first time:
$scope.login = function () { // This logic handle the addition of new users to my firebase.
$rootScope.auth.$login('twitter') // Because of I'm using Twitter for login.
.then(function (user) {
$scope.myFirebaseRef.$child(user.uid).$set({name: user.displayName}); // Create new profile.
console.log("Welcome " + user.displayName + "!" );
$state.go('home');
}, function (error) {
consolle.log(error);
}
);
}
Then, I perform this resolve
when I change a view:
resolve: { // Basically, It's asking for a logged user and waiting for a promise before load the controller.
session: function($rootScope) {
return $rootScope.auth.$getCurrentUser().then(function(user) {
if (user) {
$rootScope.someCurrentUser = user.uid;
}
});
}
}
Finally, I use $rootScope.someCurrentUser
to create a personalized session:
.controller('sessionController', ['$rootScope', '$firebase', function($rootScope, $firebase) {
var someUserRef = new Firebase('https://myfirebase.firebaseio.com/' + $rootScope.someCurrentUser);
$scope.sessionRef = $firebase(someUserRef);
// Do something with/in your personalized session.
}]);
I hope this approach gives you some ideas to create sessions/own data per user.