Tengo un sitio web donde el usuario puede crear una cuenta, dada la información básica del usuario como "nombre de usuario", "contraseña", "correo electrónico", etc...
Ahora, quiero implementar el inicio de sesión de Google, pero no estoy seguro de cómo se administrará el back-end. ¿Debería crear una tabla diferente para los usuarios de Google o fusionarla con la tabla de usuarios original, pero el problema es que el inicio de sesión de Google no tiene una contraseña asociada, hago que la contraseña no sea obligatoria, genero una contraseña aleatoria o hago el usuario crear una contraseña?
¿Y si el usuario quiere registrarse a través de los medios regulares con el mismo correo electrónico, pero ya usó el inicio de sesión de Google, se debe fusionar la cuenta con la original para que no pierda sus datos?
lo que estás describiendo aquí es un problema que tienen muchos sitios web. No creo que haya una respuesta correcta o incorrecta.
Desde mi experiencia: sugeriría mantener una columna en su tabla de usuarios que indique el tipo de autenticación. podría ser "contraseña" para usuarios que inician sesión con contraseña y "google" para iniciar sesión con usuarios de google.
la columna de contraseña solo debe completarse cuando el usuario realmente usa el mecanismo de autenticación de contraseña. Eso es por motivos de seguridad para garantizar que no se produzcan apropiaciones de cuentas en cuentas autenticadas por otros medios.
Si desea permitir que los usuarios "inicien sesión con contraseña", puede implementar un flujo que:
Además, al revés, cuando tiene un usuario que tiene una contraseña y luego comienza a hacer clic en "iniciar sesión con google", probablemente también debería tener un flujo para migrar al usuario para que inicie sesión con google.