2016-08-07 3 views
2

У нас есть большой SPA с использованием Firebase v2. Мы хотели бы перейти на новый API, но у нас возникает следующая проблема:Firebase - создать пользователя на сервере Node.js

Поскольку приложение довольно большое, мы разработали множество интеграционных тестов, и для этих тестов нам всегда нужно сбросить базу данных и инициализировать ее до состояние, в котором существуют некоторые пользователи. Тем не менее, мы выяснили, что на самом деле нет такой вещи, как создание пользователя на сервере (Firebase createUserWithEmailAndPassword method is undefined in node.js), и мы совершенно не уверены в том, как обновить API и тем не менее иметь возможность сбросить и инициализировать базу данных с сервера.

Кроме того, мы вынуждены сделать это обновление, потому что заметили, что Firebase v2 по-прежнему использует устаревший Graph API v2.0 для Facebook OAuth и не рекомендуется использовать после 8.8.2016. Мы понимаем, что Firebase v2, вероятно, не будет обновлять вызовы Graph API, поскольку v2 является устаревшим. Это, однако, пока оставляет нас в полном уединении.

Любая помощь по этой теме, пожалуйста?

ответ

4

С Firebase v3.3.0 вы можете создавать учетные записи пользователей, используя Node, но документация не очень хороша в том, как выставлять эти методы.

Чтобы использовать методы управления пользователями, вам необходимо инициализировать приложение на узле с помощью ключа веб-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'); 

Вы можете захватить ваш клиент ключ API из вашего Firebase консоли от руководства Web Setup https://firebase.google.com/docs/web/setup

Это единственная ссылка, которую я мог найти, что явно ссылается на необходимость INIT с ключом апи, чтобы получить это работать. https://groups.google.com/forum/#!msg/firebase-talk/_6Rhro3zBbk/u8hB1oVRCgAJ

1

Ниже приведен рабочий пример создания пользователя Firebase через 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); 
}); 

} 

Для получения дополнительной информации вы можете увидеть следующий пост

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

Благодарности

Смежные вопросы