授权后,Auth0获取用户电子邮件



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

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

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。我的猜测是我遗漏了一小段我遗漏的代码,或者我没有安装的库

由于我使用的是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));
})

希望它对其他有用

相关内容

最新更新