2016-05-27 22 views
7

Sto provando a creare un account utente utilizzando l'autenticazione Firebase in nodejs. Non funziona e non so perché. Ecco il codice e l'errore generato da nodejs:Come possiamo creare un utente con Firebase Auth in node.js?

var config = {.......}; // i can't share the config 

var app = firebase.initializeApp(config); 

var db = app.database(); 
var auth = app.auth(); 

auth.createUserWithUsernameAndPassword("[email protected]", "@NewPassWord").then(
    function(user){ console.log(user);}, 
    function(error){ console.error(error);} 
); 

errore generare da NodeJS:

TypeError: Object [object Object] has no method 'createUserWithUsernameAndPassword' 
    at Object.<anonymous> (/home/antonio/Projects/firebase/app.js:20:6) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:906:3 
+0

Ho esattamente lo stesso problema! Si prega di aiutare http://stackoverflow.com/questions/37504466/firebase-auth-createuserwithemailandpassword-undefined-is-not-a-function?lq=1 –

+0

Ho trovato un rimedio per questo utilizzando l'autenticazione utente anonimo dal client lato. Gentilmente elabora il tuo caso d'uso, in modo che io possa scrivere una risposta basata su questo. –

risposta

2

bene, non credo che il metodo "createUserWithUsernameAndPassword" funziona,

Utilizzare questo invece createUserWithEmailAndPassword

nome utente utilizzato quando firebase utilizza l'e-mail

0

La risposta di Cyrus è corretta.

Tuttavia, si ricorda che a partire dal Nov 2016 il modo per farlo è il seguente:

firebaseAdmin.auth().createUser({ 
    email: "[email protected]", 
    password: "secretPassword" 
    }) 
    .then(function(userRecord) { 
    // A UserRecord representation of the newly created user is returned 
    console.log("Successfully created new user:", userRecord.uid); 
    }) 
    .catch(function(error) { 
    console.log("Error creating new user:", error); 
    }); 

vedere una guida più completa nel official documentation.

1

Finalmente ho funzionato in Node.js. Il tuo app è un'istanza di firebase-admin per caso, al contrario di firebase?

Nel mio express app che inizializzare firebase nella principale app.js in questo modo (piuttosto standard):

var firebase = require("firebase"); 

firebase.initializeApp 
({ 
    apiKey: "xxx", 
    authDomain: "xxx", 
    databaseURL: "xxx", 
    storageBucket: "xxx", 
    messagingSenderId: "xxx" 
}); 

Poi nel route responsabile della creazione di utenti faccio questo:

var firebase = require("firebase"); 

router.post('/register', function(req, res, next) 
{ 
    var email = req.body.email; 
    var password = req.body.password; 

    firebase.auth().createUserWithEmailAndPassword 
    (
    email, 
    password 
) 
    .then(function(userRecord) 
    { 
    res.location('/user/' + userRecord.uid); 
    res.status(201).end(); 
    }) 
    .catch(function(error) 
    { 
    res.write 
    ({ 
     code: error.code 
    }); 
    res.status(401).end(); 
    }); 
}); 
+0

Dove gestisci l'accesso o l'autenticazione di un utente in espresso? –

3

As di maggio 2017, questo è quello che stiamo usando con successo.

// Create the authenticated user 
    admin.auth().createUser({ 
    email: email, 
    password: password, 
    displayName: `${firstName} ${lastName}`, 
    }) 
0

NOTA: Questa non è una risposta, ma si sta estendendo this risposta da @Gregg sopra.

Anch'io stavo cercando di creare utenti utilizzando un account di servizio con Firebase + node + express.

Per chiunque altro interessato:

Nella radice app.js ho:

var admin = require("firebase-admin"); 
var serviceAccount = require("./key.json"); 

admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: "https://<app-name>.firebaseio.com" 
}); 

e nel percorso auth.js ho (come da @Gregg):

const firebase = require('firebase-admin'); 

firebase.auth().defaultAuth.createUser({ 
    email: req.body.email, 
    password: req.body.password, 
    displayName: req.body.username, 
}) 

So che questa è solo una leggera estensione della risposta precedente, tuttavia i documenti sembrano essere poco chiari e ho notato un gran numero di persone che hanno lo stesso problema o simili.

Problemi correlati