La méthode Firebase createUser()
utilise un champ de courrier électronique et un mot de passe, mais que se passe-t-il si je souhaite également autoriser un nom d'utilisateur personnalisé, tel que Snapchat, Instagram, StackOverflow, etc.? Existe-t-il un moyen de modifier la méthode existante pour accepter également ce champ ou dois-je exécuter Push et gérer ces informations manuellement et, le cas échéant, comment?
Ceci est ma première tentative de stockage des informations utilisateur souhaitées:
Firebase ref = new Firebase(firebaseURL);
ref.createUser(email, password, new Firebase.ValueResultHandler<Map<String, Object>>() {
@Override
public void onSuccess(Map<String, Object> result) {
System.out.println("Successfully created user account with uid: " + result.get("uid"));
//Sign user in
Firebase ref = new Firebase(firebaseURL);
ref.authWithPassword(email, password, new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider());
//Save user info
Firebase userRef = new Firebase(firebaseURL + "Users/");
User user = new User(username, authData.getUid());
userRef.setValue(user);
Est-ce une bonne pratique? J'ai pensé que le stockage de l'UID avec le nom d'utilisateur pourrait m'aider à gérer les modifications, etc. En outre, devrais-je implémenter la méthode updateChildren()
ou Push()
afin que les entrées ne soient pas écrasées s'il s'agit d'une application de média social?
C'est ma deuxième tentative:
@Override
public void onAuthenticated(AuthData authData) {
System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider());
//Save user info and username
Firebase ref = new Firebase(firebaseURL);
Map<String, String> map = new HashMap<String, String>();
map.put("email", email);
map.put("username", username);
map.put("provider", authData.getProvider());
ref.child("users").child(authData.getUid()).setValue(map);
Montrer un formulaire avec trois champs:
Envoyez les deux derniers à la méthode createUser()
de Firebase. Ensuite, dans le rappel d'achèvement pour cela, stockez toutes les informations dans votre base de données Firebase.
var userName, emailAddress, password;
// TODO: read these values from a form where the user entered them
var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.createUser({
email : emailAddress,
password : password
}, function(error, authData) {
if (error) {
console.log("Error creating user:", error);
} else {
// save the user's profile into the database so we can list users,
// use them in Security and Firebase Rules, and show profiles
ref.child("users").child(authData.uid).set({
provider: authData.provider,
name: userName
});
}
});
Voir cette page sur stocker les données utilisateur dans les documents Firebase pour plus d'informations.
Oui, il existe un moyen de mettre à jour les informations utilisateur dans Firebase . Tout ce dont vous avez besoin - pour lire cet article dans la documentation Firebase et mettre en œuvre la méthode décrite ici Update user info
En utilisant cette méthode, vous pouvez mettre à jour la propriété diplayName de l’objet FirabaseUser. Il suffit de définir le nom d'utilisateur pour la propriété displayName et de valider vos modifications.
J'espère que cela t'aidera.
Voici un moyen de stocker les détails enregistrés dans la base de données,
Map<String, String> parameters = new HashMap<>();
FirebaseDatabase mFirebaseInstance;
parameters.put(Constant.TAG_USER, strUsrS.trim());
parameters.put(Constant.TAG_EMAIL, strEmailS.trim());
parameters.put(Constant.TAG_PASS, strPassS.trim());
//use this if needed(pushId)
String pushId = mFirebaseInstance.getReference(YOUR TABLE NAME).getRef().Push().getKey();
parameters.put(Constant.TAG_KEY, pushId.trim());
mFirebaseInstance.getReference(YOUR TABLE NAME).getRef().child(strUsrS.trim()).setValue(parameters);
Essayez cette implémentation et exécutez ... Merci
J'espère que vous savez comment modifier (créer) une table avec les champs obligatoires dans firebase.