2016-08-07 44 views
2

Wir haben einen großen SPA mit Firebase v2. Wir möchten auf die neue API aktualisieren, aber wir treten das folgende Problem auf:Firebase - Benutzer auf Node.js Server erstellen

Da die App ziemlich groß ist, haben wir viele Integrationstests entwickelt, und für diese Tests müssen wir immer die Datenbank zurücksetzen und initialisieren ein Zustand, in dem einige Benutzer existieren. Wir haben jedoch herausgefunden, dass es wirklich keinen Benutzer mehr auf dem Server gibt (Firebase createUserWithEmailAndPassword method is undefined in node.js), und wir sind ziemlich unsicher, wie wir die API aktualisieren und die Datenbank vom Server zurücksetzen und initialisieren können.

Darüber hinaus sind wir ziemlich gezwungen, dieses Upgrade durchzuführen, da wir festgestellt haben, dass Firebase v2 immer noch die veraltete Graph API v2.0 für Facebook OAuth verwendet und nicht für die Verwendung nach dem 8.8.2016 empfohlen wird. Wir wissen, dass Firebase v2 die Aufrufe an die Graph-API wahrscheinlich nicht aktualisieren wird, da die Version 2 veraltet ist. Das lässt uns aber erst einmal in die Enge treiben.

Irgendwelche Hilfe zu diesem Thema, bitte?

Antwort

4

Ab Firebase v3.3.0 können Sie Benutzerkonten mit Node erstellen, aber die Dokumentation zeigt nicht, wie Sie diese Methoden bereitstellen können.

Um die Benutzerverwaltungsmethoden zu verwenden, müssen Sie eine Anwendung im Knoten mit Ihrem Web-API-Schlüssel und nicht mit der Dienstkonto-Konfiguration initialisieren, die im Einrichtungshandbuch ausgeführt wurde.

// The Usual Service Account Init 
// This will not contain any user management methods on firebase.auth() 
this.app = firebase.initializeApp(
    { 
    serviceAccount: 'path/to/serviceaccount/file.json', 
    databaseURL: 'https://mydbfb.firebaseio.com' 
    }, 
    'MyAppName'); 

// Web Client Init in Node.js 
// firebase.auth() will now contain user management methods 
this.app = firebase.initializeApp(
    { 
    "apiKey": "my-api-key", 
    "authDomain": "somedomain.firebaseapp.com", 
    "databaseURL": "https://mydbfb.firebaseio.com", 
    "storageBucket": "myfbdb.appspot.com", 
    "messagingSenderId": "SomeId" 
    }, 
    'MyAppName'); 

Sie können Ihren Client-API-Schlüssel von Ihrer Firebase-Konsole aus dem Web-Setup-Guide https://firebase.google.com/docs/web/setup

Dies ist die einzige Referenz packen ich das explizit verwies auf die Notwendigkeit init mit api Schlüsseln dies zu umgehen finden konnte, arbeiten. https://groups.google.com/forum/#!msg/firebase-talk/_6Rhro3zBbk/u8hB1oVRCgAJ

1

Da unten ist ein funktionierendes Beispiel für das Erstellen Firebase Benutzer durch Node.js

exports.addUser = function(req, res) { 
var wine = req.body; 

var email = req.body.email; 
console.log(req.body); 
var password = req.body.password; 
var name = req.body.name; 

console.log(“Creating user for -“+email+”-“+password); 

var defaultAuth = admin.auth(); 
admin.auth().createUser({ 
email: email, 
emailVerified: false, 
password: password, 
displayName: name, 
disabled: false 
}) 
.then(function(userRecord) { 

console.log(“Created Firebase User successfully with id :”, userRecord.uid); 
var wine = req.body; 
wine.userId = userRecord.uid; 
wine.timestamp = Date.now(); 
delete wine.password; 
status = “201”; 
var reply = JSON.stringify(wine); 

db.collection(‘collname’, function(err, collection) { 
collection.insert(wine, {safe:true}, function(err, result) { 
if (err) { 
wine.status = “200”; 
wine.message = “An error occured”; 
reply.set(‘status’,”201″); 
res.status(201).send(wine); 

} else { 
console.log(‘Success: ‘ + JSON.stringify(result[0])); 
status= “200”; 
wine.status = “200”; 
wine.message = “Account created Successfully”; 
res.status(200).send(wine); 
} 
}); 
}); 
}) 
.catch(function(error) { 
wine.message = “An error occured—“; 
wine.status = “201”; 

console.log(“User Creation onf Firebase failed:”, error); 
res.status(201).send(wine); 
}); 

} 

Für Einzelheiten können Sie den folgenden Blog-Post

http://navraj.net/?p=53

Dank sehen