2 votes

Comment créer des noms d'utilisateur avec Firebase ?

Je suis encore novice en matière de swift et de codage avec Xcode et j'utilise Firebase. J'ai réussi à créer une page d'inscription et de connexion avec l'authentification Firebase. Je me suis demandé comment permettre aux gens de créer des noms d'utilisateur uniques et personnalisés. Je cherche depuis un moment sur le web et je ne trouve pas grand chose.

Je veux apprendre comment mettre en œuvre des noms d'utilisateur dans mon application afin que les utilisateurs puissent créer des noms d'utilisateur uniques et avoir leurs propres profils.

1voto

Vlad Pulichev Points 2006

Après avoir créé un utilisateur dans Firebase Auth, faites quelque chose comme ceci :

let newUser = UserItem(uid: < Value >, email: < Value >, login: < Value >, createdDate: < Value >)

// Create a child path with a key set to the uid underneath the "users" node
let refToMainDB = FIRDatabase.database().reference(withPath: "< PathToMainDB >")
refToMainDB.child("users").child(< uid >).setValue(newUser.toAnyObject()

Par exemple, ma structure UserItem :

import Foundation
import FirebaseAuth
import FirebaseDatabase

struct UserItem {
let uid: String

let email: String
let login: String
let bioDescription: String
let nameAndSename: String
let createdDate: String

let ref: FIRDatabaseReference?

init(uid: String, email: String, login: String, bioDescription: String = "", nameAndSename: String = "", createdDate: String) {
    self.uid = uid

    self.email = email
    self.login = login
    self.bioDescription = bioDescription
    self.nameAndSename = nameAndSename
    self.createdDate = createdDate

    self.ref = nil
}

init(snapshot: FIRDataSnapshot) {
    uid = snapshot.key

    let snapshotValue = snapshot.value as! [String: AnyObject]
    email = snapshotValue["email"] as! String
    login = snapshotValue["login"] as! String
    bioDescription = snapshotValue["bioDescription"] as! String
    nameAndSename = snapshotValue["nameAndSename"] as! String
    createdDate = snapshotValue["createdDate"] as! String

    ref = snapshot.ref
}

func toAnyObject() -> Any {
    return [
        "uid": uid,
        "email": email,
        "login": login,
        "bioDescription": bioDescription,
        "nameAndSename": nameAndSename,
        "createdDate": createdDate
    ]
}
}

Vous pouvez consulter mon exemple de code pour cela aquí J'espère que cela vous aidera

0voto

Vlad Pulichev Points 2006

En complément de mon commentaire.

let currentUserId = FIRAuth.auth()?.currentUser?.uid
let currentUserRef = FIRDatabase.database().reference(withPath: "MainDataBase/users").child(currentUserId!) // MainDataBase/users - is part from you database

currentUserRef.observeSingleEvent(of: .value, with: { snapshot in
        self.userInfo = UserItem(snapshot: snapshot)
        self.label.text = "Welcome " + (self.userInfo.login)!  // for example it will show login
    })

Bonne chance

EDIT : C'est mieux d'avoir quelque chose comme ça :

var userInfo: UserItem! {
    didSet {
        self.label.text = "Welcome " + (self.userInfo.login)!  // for example it will show login
        // other actions
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X