Login requires contacting the server asynchronously. You can't immediately access the variable on the next line because it hasn't been retrieved yet. Additionally, you'll need to call login() before a user object will exist. Assuming there is a login persisted from another page view, or login() has been called, you can take a few approaches to accomplish what you want.
Use $getCurrentUser() to wait for the auth process to resolve and fetch the user account that is currently authenticated:
angular.module("sampleApp", ["firebase"])
.controller("SampleController", ["$scope", "$firebase", "$firebaseSimpleLogin",
function($scope, $firebase, $firebaseSimpleLogin) {
var ref = new Firebase("https://<my-firebase>.firebaseio.com/");
$scope.auth = $firebaseSimpleLogin(ref);
$scope.auth.$getCurrentUser().then(function(user) {
console.log(user);
});
}
]);
Utilize the auth events:
angular.module("sampleApp", ["firebase"])
.controller("SampleController", ["$scope", "$firebase", "$firebaseSimpleLogin",
function($scope, $firebase, $firebaseSimpleLogin) {
var ref = new Firebase("https://<my-firebase>.firebaseio.com/");
$scope.auth = $firebaseSimpleLogin(ref);
$scope.$on('$firebaseSimpleLogin:login', function() {
console.log($scope.auth.user);
});
}
]);
Or you can use the promise returned when login is called:
angular.module("sampleApp", ["firebase"])
.controller("SampleController", ["$scope", "$firebase", "$firebaseSimpleLogin",
function($scope, $firebase, $firebaseSimpleLogin) {
var ref = new Firebase("https://<my-firebase>.firebaseio.com/");
$scope.auth = $firebaseSimpleLogin(ref);
$scope.auth.$login('twitter').then(function() {
console.log($scope.auth.user);
});
}
]);