In 1.28.0, FusionAuth introduced a linking strategy and a first class 'link' object. This is part of the community/free edition.

This is how I'd approach that. You'd have to get the user to login via their social account and get their unique user Id (for, say, Google). This could be done via a page in your application.

Then you'd take that Google user Id and create a link using the APIs: https://fusionauth.io/docs/v1/tech/apis/identity-providers/links/

Here's more on this: https://fusionauth.io/docs/v1/tech/identity-providers/#linking-strategies

After the link is created, the next time the user went to login, they could use either their old email/password creds or the linked social login.