2015-04-03 48 views
0

我在使用我的应用程序中的工厂进行身份验证时遇到了一些麻烦。目标是仅在用户尚未通过身份验证时才获取令牌。当我使用下面的代码,我得到以下错误:在Angular返回对象后无法访问代码

Cannot read property 'uid' of null

我不能说,如果这仅仅是一个次要的问题语法或更大的东西。看起来好像没有任何以var authData开头的代码正在被读取。

(function() { 
    'use strict'; 
    angular.module('firebase.auth', ['firebase', 'firebase.ref']) 

    .factory('Auth', ['$firebaseAuth', 'Ref', function ($firebaseAuth, Ref) { 

     return $firebaseAuth(Ref); 
     var authData = Ref.getAuth(); 
     console.log(authData); 

     if (authData) { 
      console.log('already logged in with ' + authData.uid); 
      } else { 

      return Auth.$authAnonymously({rememberMe: true}).then(showError); 

      function showError(err) { 
       Login.err = err; 
      } 
      } 
     } 
    ]); 
})(); 

angular.module('App') 

    .factory('Projects', function ($firebaseArray, fbURL, Auth, Ref) { 
     var authData = Ref.getAuth(); 
     var ref = new Firebase(fbURL + '/projects/' + authData.uid); 
      return $firebaseArray(ref); 
}) 

回答

1
return $firebaseAuth(Ref); 

It looks like none of the code starting with var authData is being read.

你在你的函数的顶部卡住return语句。这将退出该功能。

+0

谢谢。这是否意味着我需要为'var authData'开头的代码使用新的工厂,还是有更好的方法来完成我的目标? – Ken 2015-04-03 07:29:10

+0

我不完全确定*你的目标是在这里。你能给出一个关于'$ firebaseAuth'是什么的背景解释,以及为什么你可能需要像你一样在顶端返回它? – christopher 2015-04-03 07:36:46

+0

我正在使用[Firebase](http://www.firebase.com)作为我的后端。 [AngularFire](https://www.firebase.com/docs/web/libraries/angular/guide/user-auth.html)是它的AngularJS库。所有这些对我来说都是非常新的,但我认为'$ firebaseAuth'是一个服务,返回的对象包含用于验证用户的方法。我想我需要把它放在最上面才能使用getAuth()来检索当前的身份验证状态(以确定用户是否已经通过身份验证和匿名身份验证,如果需要的话)。那有意义吗? – Ken 2015-04-03 07:54:27