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);
})
谢谢。这是否意味着我需要为'var authData'开头的代码使用新的工厂,还是有更好的方法来完成我的目标? – Ken 2015-04-03 07:29:10
我不完全确定*你的目标是在这里。你能给出一个关于'$ firebaseAuth'是什么的背景解释,以及为什么你可能需要像你一样在顶端返回它? – christopher 2015-04-03 07:36:46
我正在使用[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