Auth0 授权后获取用户邮箱

Posted

技术标签:

【中文标题】Auth0 授权后获取用户邮箱【英文标题】:Auth0 get user email after authorization 【发布时间】: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。我的猜测是我错过了我丢失的一小段代码,或者我没有安装的库

【问题讨论】:

【参考方案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));
)

希望它对其他人有用

【讨论】:

以上是关于Auth0 授权后获取用户邮箱的主要内容,如果未能解决你的问题,请参考以下文章

EMS导入导出邮箱

MacOS邮件关联QQ邮箱

python 自动发送QQ邮箱

小米 MIUI 日历同步QQ邮箱

Django 配置 qq 邮箱发送邮件

Python Django 配置QQ邮箱发送邮件