电子邮件验证后重定向

时间:2016-01-22 22:36:08

标签: angularjs firebase angularfire firebase-authentication

我在登录成功后无法重定向用户,我已经阅读了Firebase的文档并尝试了几件事但到目前为止没有运气

有人能指出我正确的方向吗?

提前致谢, 热雷米。

这是controller.js

.controller('LoginCtrl', function($scope, $ionicPopup, $state, Auth) {
$scope.data = {};

$scope.login = function() {
      Auth.login($scope.data.email, $scope.data.password).then(function() {
        $state.go("tab-discover");
               })

    .error(function() {
        var alertPopup = $ionicPopup.show({
            title: 'Mauvais identifiants',
            template: 'Veuillez recommencer'
        });
    });
}

$scope.signup = function() {
      Auth.signup($scope.data.email, $scope.data.password)
    .error(function() {
        var alertPopup = $ionicPopup.show({
            title: 'Erreur',
            template: 'Un probleme est survenu'
        });
      });
    }

  })

和services.js

.factory("Auth", function(FURL, $firebaseAuth) {


  var ref = new Firebase(FURL);
  var auth = $firebaseAuth(ref);
  var Auth = {
    user: {},

login: function(email, password){
  console.log("loginService", email, password);

  return ref.authWithPassword({
    "email": email,
    "password": password
  }, function(error, authData) {


    if (error) {
    console.log("La connexion a echoué!", error);
  } else {
    console.log("Authenticated successfully with payload:", authData);
  }
})
    },
    signup: function(email, password){
      console.log("signupService", email, password);
      return ref.createUser({
        "email": email,
        "password": password
      }, function(error, userData) {
  if (error) {
    switch (error.code) {
      case "EMAIL_TAKEN":
        console.log("The new user account cannot be created because the email is already in use.");
        break;
      case "INVALID_EMAIL":
        console.log("The specified email is not a valid email.");
        break;
      default:
        console.log("Error creating user:", error);
    }
  } else {
    console.log("Successfully created user account with uid:", userData.uid);
  }
}).then(function(){
        return Auth.login(email, password);
    })
  }
}
return Auth;
})

1 个答案:

答案 0 :(得分:0)

看起来firebase正在使用回调,您尝试将其作为then的承诺返回。一个简单的解决方法是将回调传递给您的登录函数并在firebase回调中调用它:

login: function(email, password, callback, onError){
  console.log("loginService", email, password);

  ref.authWithPassword({
    "email": email,
    "password": password
  }, function(error, authData) {

  if (error) {
    onError(error);
  } else {
    callback(authData);
  }
})

然后这样称呼:

Auth.login($scope.data.email, $scope.data.password, function (data) {
    console.log("Authenticated successfully with payload:", data);
    $state.go("tab-discover");
}, function (error) {
    console.log("La connexion a echoué!", error);
});