2017-10-29 1 views
0

Ich habe eine Website zusammenstellen und ich habe das neueste Firebase-Skript und alles verwendet. Wenn ich ein benutzerdefiniertes Benutzerattribut anfordere, das erstellt wurde, sagt es, es sei "undefiniert".Firebase-Authentifizierung benutzerdefinierte Attributfehler

Custom:
Punkte
ownedavatars

Code:

SignUp

var user = firebase.auth().currentUser; 
user.updateProfile({ 
    displayName: //username, 
    photoURL: //icon, 
    points: 0, 
    ownedavatars: "default" 
}).then(function() { 
    user.sendEmailVerification().then(function() { 
    //it would save email and password and then redirect here 
    }).catch(function(error) { 
    console.log(error.message); 
    }); 
}).catch(function(error) { 
    console.log(error.message); 
}); 

Anmeldung

var listofavatars; 
firebase.auth().signInWithEmailAndPassword(email, password).then(function() { 
    var user = firebase.auth().currentUser; 
    if (user != null) { 
    document.getElementById("user").innerHTML = user.displayName; 
    if (user.points == undefined) { 
     document.getElementById("points").innerHTML = "0p"; 
    } else { 
     document.getElementById("points").innerHTML = user.points + "p"; 
    } 
    listofavatars = user.ownedavatars; 
    if (user.photoURL == "default") { 
     document.getElementById("avatar").src = //would pull default; 
    } else { 
     document.getElementById("avatar").src = //would pull any other icon saved; 
    } 
    } 
}).catch(function(error) { 
    alert(error.message + " Code:" + error.code); 
}); 

Antwort

0

Sie können updateProfile nicht verwenden willkürliche c zu speichern Benutzervariablen. Diese API unterstützt derzeit nur photoURL und displayName`. Um andere Benutzerdaten zu speichern, müssen Sie dazu eine separate Datenbank verwenden. Sie können hierzu die Firebase-Echtzeitdatenbank oder Firestore verwenden. Hier ist ein Beispiel, wie Sie sicher benutzerspezifische Daten speichern: https://firebase.google.com/docs/database/security/user-security

Wenn Sie benutzerspezifische Daten für rollenbasierte Zugriffskontrolle zu speichern, können Sie die Firebase Admin SDK verwenden, um benutzerdefinierte Benutzer-Attribute: https://firebase.google.com/docs/auth/admin/custom-claims

Es wird jedoch dringend empfohlen, dass diese benutzerdefinierten Benutzerdaten für die Zugriffssteuerung verwendet werden. Verwenden Sie für andere Daten eine dedizierte Datenbank wie oben beschrieben.

Verwandte Themen