as I've worked with this type of integration, here is a conclution of our solution.
you should structure your solution to read the user's data from Facebook, but not to depend on them as usernames or any unique fields because users can change these data resulting in losing their old accounts.
You should ALWAYS associate the users data with their FacebookID.
This way, you will make sure that you can identify them upon logging, and you may then change the associated email, or name , or any other type of data.
one more thing, if you are forced to use the user's Email as a login name, you can still depend on the one that is coming from Facebook, but you will need to implement one extra step which is to check the user data associated with his FacebookID every time he login to your service/website.
then whenever you detect a modification, you can notify him that you are going to use the new data instead of the old ones.