2016-01-22 4 views
0

У меня возникли проблемы перенаправления пользователя после успешного входа в систему, я читал документацию для Firebase и попробовал несколько вещей, но не везло до сих порПеренаправление после проверки подлинности электронной почты

Может кто-нибудь мне точку в правильном направлении?

Заранее спасибо, Jérémie.

Вот что 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; 
}) 
+0

Redirect, как 'window.location =«someotherlocation «; '? – Filipe

+0

@Filipe OP использует угловую маршрутизацию для перенаправления, строка $ state.go (..) – aw04

ответ

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); 
}); 
+0

i get 750853 error TypeError: Невозможно прочитать свойство 'then' of undefined в области видимости. $ Scope.login (http: // localhost : 8100/js/controllers.js: 7: 62) и 751852 предупреждают FIREBASE ПРЕДУПРЕЖДЕНИЕ: Исключение было вызвано обратным вызовом пользователя. TypeError: callback не является функцией –

+0

Я удалил тогда из кода, если вы получаете эту ошибку, это не с кодом, который я предоставил – aw04

+0

Вы правы, мой плохой Спасибо, что работает сейчас –

Смежные вопросы