简体   繁体   中英

How to get user.email in server using auth0 and node.js?

On my frontend, I can see the email through:

  console.log(auth.profile.email)

Then I call this service to retrieve some information from the backend, it's protected so you need to be logged in to get anything back:

var metadata_req = {
        method: "GET",
        url: "http://localhost:80/protected/all/metadata"
    }

On the backend, I'm using node.js and this to verify that the user is logged in before doing a request:

var jwtCheck = express-jwt({
    secret: new Buffer(config.secret, 'base64'),
    audience: config.client_id
});

But if I print out req.user, I only see iss, sub, aud, exp and iat. I would like to see the email as well.

You can get profile information in req.user by including the email permission when your user initially logs in.

For example, using lock in angular would look like this:

auth.signin({
    authParams: {
      scope: 'openid email'
    }
  }, function(profile, token) {
    // stuff
  }, function(err) {
    // error handling
  });

Change your API definition from "all/metadata" to "all/metadata/:emailId"

Call your API

var metadata_req = {
        method: "GET",
        url: "http://localhost:80/protected/all/metadata/{your_email_id}"
    }

In NodeJS retrieve you email_id from req.params.emailId

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM