If the user is authenticating and initially registering with a third-party service, you should probably just get that info right when they sign up. How many users do you expect to have who will never need to provide their basic account info?
It is indeed bad practice to inject services into an Entity, as an Entity's purpose is nothing more than to contain an object and its data. You should use a UserProvider
for fetching the user data for an existing user, as described in various sets of guidelines for integrating the FOSUserBundle and the FOSFacebookBundle.
Now, when you do a Google search for integrating those two bundles, or when you ask around, you're going to be pointed to a paid screencast that costs $15. If you're really committed to Symfony as a framework for your projects, it may be worth your money to see how the people that build Symfony things think. If you are willing to deal with some pulling out of your own hair, you can dig deeper into the search results, and look at resources like this gist: https://gist.github.com/iBet7o/5215066.
Your exact implementation will depend on the bundles you're using, but in general, what your code should end up looking like is this:
function getName() {
if($this->name == '') {
return $this->getSignupProvider()->getUserinfo(); // or maybe just getProvider()
}
return $this->name;
}