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