【问题标题】:Auth0 get user email after authorizationAuth0 授权后获取用户邮箱
【发布时间】:2022-01-23 08:26:41
【问题描述】:

我有一个应用程序和一个 api,就 auth0 而言,一个静态前端和一个 expressjs 后端,在生产中都在工作。我设置了 Auth0,用户可以使用 Google 帐户登录。

我无法获取用户的电子邮件。我将尝试总结重要的代码行

const jwt = require('express-jwt');
const jwks = require('jwks-rsa');
const jwtAuthz = require('express-jwt-authz');

let jwtCheck = jwt({
  secret: jwks.expressJwtSecret({
    cache: true,
    rateLimit: true,
    jwksRequestsPerMinute: 5,
    jwksUri: `https://myapp-01.us.auth0.com/.well-known/jwks.json`
  }),
  audience: `https://api.myapp.com`,
  issuer: `https://myapp-01.us.auth0.com/`,
  algorithms: ['RS256']
});

const checkClientScopes = jwtAuthz(['openid', 'profile', 'email'], { checkAllScopes: true });

app.use('/users', jwtCheck, checkClientScopes, (req, res) => {
  console.log('*** req.user *** ', req.user)
  res.send({ user: req.user })
})

我一直在尝试获取用户电子邮件,我安装了,然后我删除了库 express-openid-connect。我的猜测是我错过了我丢失的一小段代码,或者我没有安装的库

【问题讨论】:

    标签: auth0


    【解决方案1】:

    因为我使用的是express-jwtjwks-rsa

    我能够创建一个函数来检索用户数据,但我需要添加axios 库来请求/userinfo,之后

    这是我创建的函数

    const jwtUser = async (req, res, next) => {
      const response = await axios.get(req.user.aud[1], { headers: { 'Authorization': req.headers.authorization } });
      req.user = response.data;
      next()
    };
    

    然后我就可以获取用户数据了

    app.use('/userdata', jwtCheck, jwtUser, (req, res) => {
      console.log('user: ', req.user);
      res.send(JSON.stringify(req.user));
    })
    

    希望它对其他人有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-12
      • 2018-02-02
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 2014-01-05
      • 1970-01-01
      相关资源
      最近更新 更多