I currently have the "One account per email address" setting on on Firebase Authentication. The problem is when a user logs in with Google OAuth using the same email address that was already used to create an email/password account, Google OAuth automatically replaces the email/password provider with its own.
I have the following set up on my error handling process so that a user could be prompted the choice to link the two accounts or not:
if (error.code === 'auth/email-already-in-use' || error.code === 'auth/credential-already-in-use' || error.code === 'auth/account-exists-with-different-credential')
but Google OAuth doesn't even incur any error for me to catch. It simply and silently replaces the existing account.