The display name is set from the Facebook user's "username". Not all FB users have a username, but some do. Mine, for instance, is "habuma" and Mark Zuckerberg's is "zuck". But some people have not bothered setting their username (they can still login with their email address)...in those cases, the displayName (which is set from the username in FacebookAdapter.java) will be null.
You can't get the email address from the socialAuthenticationToken. The ConnectionData that the token carries is a minimal profile data and the idea is for it to carry some common user data that most/all providers will make available. Since not all providers will make email available (Twitter, for instance, does not expose their user's email address), it's not one of the values captured in the connection data.
You can, however, use the Facebook API binding (Facebook/FacebookTemplate) to fetch the user's full profile data and from that get the email. Assuming you have an instance of the Facebook interface, it'd be something like this:
Code:
FacebookProfile profile = facebook.userOperations().getUserProfile();
String email = profile.getEmail();
Craig Walls
Spring Social Project Lead