获取Firebase错误。 createUser失败:第一个参数必须包含密钥“password”Angularjs

时间:2015-12-29 01:31:35

标签: javascript angularjs firebase angularfire

我是棱角分明的新手,我正在网上关注chatapp教程。我收到此错误“Firebase.createUser失败:当我尝试使用电子邮件和密码注册时,第一个参数必须包含密钥”password“”。该应用还没有完成,我刚刚完成了auth部分。谷歌回答建议我更新到最新的angularfire,我做了(1.1.3)。不知道该怎么做。

在app.js中注册状态:

  .state('register', {
    url: '/register',
    templateUrl: 'auth/register.html',
    controller:'AuthCtrl as authCtrl',

    resolve:{
      requireNoAuth: function($state,Auth){
        return Auth.$requireAuth()
          .then(function(auth){
          $state.go('home');
          },
          function(error){
            return;
          });
        }
      }

  })

authController.js

angular.module('chatApp')

  .controller('AuthCtrl', function (Auth, $state) {

    //Using 'Controller as syntax', instead of $scope, we use 'this' to make controller

    var authCtrl = this;

    //user object controller

    authCtrl.user = {

      email:'',
      pass:''

    };

    //login object controller. Firebase provides functions.  Using promises. ( either it's fufilled, or rejected)

    authCtrl.login = function () {



      Auth.authWithPassword(authCtrl.user)
        // .then takes in 2 parameters( onSuccess, onFaliure)

        //if successfull, go home
        .then(function (auth) {

            $state.go('home');
          },

          //if failed, set error in controller, so we can call it and display message later
          function (error) {
            authCtrl.error = error;

          });

    };

//registering user
    authCtrl.register = function () {
      Auth.$createUser(authCtrl.user)

        // prompt user to login if successful
        .then(function (user) {
            authCtrl.login();
          },
//else bring up error
          function (error) {

            authCtrl.error = error;
          })


    }






});

authFactory.js

angular.module('chatApp')

.factory('Auth',function($firebaseAuth,FirebaseUrl){

  var declare= new Firebase(FirebaseUrl);
  var auth=$firebaseAuth(declare);
  return auth




});

1 个答案:

答案 0 :(得分:0)

它是password,而不是pass

其次,您在路由配置中错误地解析了用户。而不是在解决方案中使用promise链,你只需要返回承诺。

  .state('register', {
    url: '/register',
    templateUrl: 'auth/register.html',
    controller:'AuthCtrl as authCtrl',

    resolve:{
      requireNoAuth: function($state,Auth){
        return Auth.$requireAuth(); // return the promise
      }
    }

  })

然后在run()阶段,您可以收听路由错误:

app.run(function($rootScope, $location) {
  $rootScope.$on("$routeChangeError", function(event, next, previous, error) {
    if (error === "AUTH_REQUIRED") {
      $location.path("/home");
    }
  });
});

Check out the AngularFire docs on using Auth with Routing for more information.