google - Iniciar sesión por nombre de usuario: Firebase, Swift
ios firebase google sign in (1)
Separar completamente la cuenta de usuario de cualquier tipo de credencial de autenticación específica de dominio podría ser un verdadero problema más adelante (Definitivamente): -
- Actualizando su contraseña de usuario
- Intimidad
Un mejor enfoque es suscribir a su usuario con un email-ID
y un unique userName
Marque si UserName ya existe: Firebase, Swift , luego déle a su usuario la opción de Iniciar sesión con un nombre de usuario o ID de correo electrónico.
Agregue otro nodo a su árbol JSON: -
{...
usernameEmailLink:{
uniqueUserName1:emailID1,
uniqueUserName2:emailID2,
uniqueUserName3:emailID3
}
...}
Actualice sus reglas de seguridad para este nodo: -
{".rules":{
".read" : "auth != null",
".write" : "auth != null",
"usernameEmailLink" :{
".read" : "true",
".write" : "auth != null"
}
}
}
Código:-
func retrieveUserEmail(userName : String, completionBlock : ((userEmail : String) -> Void)){
var userEmail : String!
FIRDatabase.database().reference().child("usernameEmailLink//(userName)").observeSingleEvent(of: .value, with: {(snap) in
userEmail = snap.value! //This will give you the email ID for the user.
/*
completionBlock(snap.value!) // A even better way if this is all this function does.
*/
})
print(userEmail)
}
Para guardar el par clave-valor: -
FIRDatabase.database().reference().child("usernameEmailLink").updateChildValues["/(userName)" : "/(Email)"]
PD: - Pero antes de esto, asegúrese de que su nombre de usuario sea único.
Esta pregunta ya tiene una respuesta aquí:
Quiero permitir que el usuario inicie sesión con el correo electrónico y también con el nombre de usuario ¿Es posible usar Firebase?