Our registered users must provide an email address. However, if they register via FB, sometimes that does not return an email address. So the question is, what is the best method to collect that email address after registration?
I would simply ask the users. Once you discover that their email address is missing, show a message like this upon their login:
Please, complete your profile information by providing your email address and enjoy the full experience of our service.
Then it's up to you whether the email address is a requirement to use the service or only the addition.
Can you not check on the fly when they are registering?
When people are registering using fb, your db gets all the fields name, email id etc. Put a logic if DB is not getting email id, show rest of info + email id or only mandatory email id field on screen (let users know why it is valuable for them to provide email id.
It’s not easy to get users attention to provide email id after registration.
It seemed that you are using FB data to fill your own registration form. Anyways this is good practice to show such form with Submit button to give user possibility change anything he wants before registration. So, you need not do anything special because you are processing your form in usual way - it alerts on email if this is required field for your registration form.