Firebase - 在Node.js服务器上创建用户

时间:2016-08-07 10:10:01

标签: firebase firebase-authentication

我们有一个使用Firebase v2的大型SPA。我们想升级到新的API,但我们遇到以下问题:

由于应用程序非常庞大,我们开发了许多集成测试,对于这些测试,我们总是需要重置数据库并将其初始化为某些用户所在的状态。但是,我们发现确实没有再在服务器上创建用户(Firebase createUserWithEmailAndPassword method is undefined in node.js),我们不确定如何升级API,但能够从服务器重置和初始化数据库。

此外,我们非常不得不进行此升级,因为我们注意到Firebase v2仍在使用已弃用的Graph API v2.0 for Facebook OAuth,建议不要在8.8.2016之后使用。我们知道Firebase v2可能不会升级对Graph API的调用,因为v2是遗留的。然而,这让我们现在陷入了绝境。

请问有关此主题的任何帮助吗?

2 个答案:

答案 0 :(得分:5)

从Firebase v3.3.0起,您可以使用Node创建用户帐户,但文档在如何公开这些方法方面并不是很好。

要使用用户管理方法,您需要使用Web API密钥在节点中初始化应用程序,而不是在设置指南中浏览的服务帐户配置。

// 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');

您可以从网络安装指南中从Firebase控制台获取客户端API密钥 https://firebase.google.com/docs/web/setup

这是我能找到的唯一一个明确引用了使用api键初始化init以使其工作的参考。 https://groups.google.com/forum/#!msg/firebase-talk/_6Rhro3zBbk/u8hB1oVRCgAJ

答案 1 :(得分:1)

以下是通过Node.js

创建Firebase用户的工作示例
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);
});

}

有关详细信息,您可以看到以下博文

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

由于