电子邮件身份验证后重定向

Redirect after email 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;
})

看起来 firebase 在您尝试 return 的地方使用回调作为 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);
});