4

How do i get currentUser in firebase admin SDK. In client SDK we can use

onAuthStateChanged() or firebase.auth().currentUser()

In NodeJs Server.js file firebase admin SDK onAuthStateChanged() Do not work, what should work here?

Basically i want only logged in users to access my innerPages so i am using express,nodejs app.get method to create routes.

app.get('/', authenticationRequired ,function(req,res){
    res.sendFile(path.join(__dirname+'/index.html'));
});

And trying to write authenticationRequired method (returns false or true depending on if user is logged in).

Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
Noman Ali
  • 3,160
  • 10
  • 43
  • 77

1 Answers1

22

The Firebase Admin SDK does not inherently know what user is using your Express web app. You will need to implement code for this. If you're already using Firebase Authentication in the web app, this takes these steps:

  1. Retrieve the user's ID token on the client

    You can get a user's ID token by using the firebase.auth().currentUser.getIdToken() method.

  2. Pass this token from the client to the server

  3. Verify the token on the server

    The user ID token can be verified using the admin.auth().verifyIdToken(idToken) method. On success it will return a promise with the decodedToken, otherwise it will return a rejected promise.

Community
  • 1
  • 1
Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
  • Thanks - this approach makes sense. Any advice for cases where we use rewrites in the firebase.json file to serve content directly from a cloud function? i.e. we don't show users a static page in which I can do the above. – James Jul 25 '17 at 21:59
  • Thanks for your answer.. still valid in 2019 with a minor change in a method name. In step 1 the method `getToken` has been renamed to `getIdToken`: `firebase.auth().currentUser.getIdToken()` – rtribaldos Sep 20 '19 at 03:20
  • FYI, this article has code complete version of this https://fireship.io/snippets/express-middleware-auth-token-firebase/ – cevaris Oct 17 '21 at 03:07