Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sign in with Firebase-Admin using node.js

I am trying to sign in with node.js with firebase-admin, but when I look up there API, they only have sections on update, delete and create.

They do have sections on how to get the user by email but if i want to sign in a user should I not be verifying also by their password as well. I feel like I am incorrectly reading how to use firebase-admin. My best guess is that I should be using straight Firebase and not the new firebase-admin.

Edit:

I only want to sign in the user by email (i.e. not by google sign in or facebook login), if that is possible.

like image 224
Matthew Avatar asked Mar 22 '17 23:03

Matthew


2 Answers

The Firebase Admin Node.js SDK (firebase-admin on npm) is for administrative actions like fetching user data or changing a user's email without their existing password. If you just want to sign in as a user, you should use the Firebase client Node.js SDK (firebase on npm).

like image 183
jwngr Avatar answered Sep 20 '22 11:09

jwngr


Here is the answer in another post: How to authenticate an user in firebase-admin in nodejs?.

Copy and Paste, just in case:

Install firebase module: npm install firebase --save

const firebase = require("firebase");
const config = {
    apiKey: "",
    authDomain: "",
    databaseURL: "",
    projectId: "",
    storageBucket: "",
    messagingSenderId: ""
};
firebase.initializeApp(config);
exports.login = functions.https.onRequest((req, rsp)=>{
    const email = req.body.email;
    const password = req.body.password;
    const key = req.body.key;
    const _key = '_my_key_';
    let token = '';
    if(key === _key){           
    firebase.auth().signInWithEmailAndPassword(email,password).then((user)=>{
//The promise sends me a user object, now I get the token, and refresh it by sending true (obviously another promise)            
user.getIdToken(true).then((token)=>{
                rsp.writeHead(200, {"Content-Type": "application/json"});
                rsp.end(JSON.stringify({token:token}));
            }).catch((err)=>{
                rsp.writeHead(500, {"Content-Type": "application/json"});
                rsp.end(JSON.stringify({error:err}));
            });
        }).catch((err)=>{
            rsp.writeHead(500, {"Content-Type": "application/json"});
            rsp.end(JSON.stringify({error:err}));
        });
    } else {
        rsp.writeHead(500, {"Content-Type": "application/json"});
        rsp.end(JSON.stringify('error - no key'));
    }
});
like image 31
Jose Sal y Rosas Avatar answered Sep 21 '22 11:09

Jose Sal y Rosas