TypeError: access_token not present in TokenSet
TypeError: access_token not present in TokenSet
我正在尝试创建一个博客网站,我已经使用 auth0 设置了我的身份验证并作为我的后端表达。对于客户端,我正在使用 React。要了解有关登录用户的信息,我需要通过 API.
发送 req.oidc.fetchUserInfo()
对象
通过一些研究我得到了这一点:
var app = express();
const { auth } = require("express-openid-connect");
...
app.use(
auth({
issuerBaseURL: process.env.AUTH0_ISSUER_BASE_URL,
baseURL: process.env.BASE_URL,
clientID: process.env.AUTH0_CLIENT_ID,
secret: process.env.SESSION_SECRET,
authRequired: false,
auth0Logout: true,
})
)
app.use((req,res,next) => {
res.locals.isAuthenticated = req.oidc.isAuthenticated();
next();
})
const asyncMiddleware = fn =>
(req, res, next) => {
Promise.resolve(fn(req, res, next))
.catch(next);
};
app.get('/user-info', asyncMiddleware(async (req, res) => {
const userInfo = await req.oidc.fetchUserInfo();
res.json(userInfo);
}))
...
虽然当我转到地址 localhost:5000/user-info 时我 运行 出错了:
GET /user-info 500 859.666 ms - 736
TypeError: access_token not present in TokenSet
at Client.requestResource (/mnt/ALPHA/Projects/rajusite/server/node_modules/openid-client/lib/client.js:1022:15)
at Client.userinfo (/mnt/ALPHA/Projects/rajusite/server/node_modules/openid-client/lib/client.js:1121:33)
at RequestContext.fetchUserInfo (/mnt/ALPHA/Projects/rajusite/server/node_modules/express-openid-connect/lib/context.js:153:19)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async /mnt/ALPHA/Projects/rajusite/server/routes.js:111:22
我知道这是关于丢失的令牌,它不会让我获得用户的信息。
我检查过 Getting access token for Auth0 with Express 但它已经启用了。
您需要指定要访问的范围(例如“openid 电子邮件配置文件...”),但在您的代码中我没有看到。如果您不要求任何访问权限,那么您将不会获得任何访问令牌。
查看代码示例here
我正在尝试创建一个博客网站,我已经使用 auth0 设置了我的身份验证并作为我的后端表达。对于客户端,我正在使用 React。要了解有关登录用户的信息,我需要通过 API.
发送req.oidc.fetchUserInfo()
对象
通过一些研究我得到了这一点:
var app = express();
const { auth } = require("express-openid-connect");
...
app.use(
auth({
issuerBaseURL: process.env.AUTH0_ISSUER_BASE_URL,
baseURL: process.env.BASE_URL,
clientID: process.env.AUTH0_CLIENT_ID,
secret: process.env.SESSION_SECRET,
authRequired: false,
auth0Logout: true,
})
)
app.use((req,res,next) => {
res.locals.isAuthenticated = req.oidc.isAuthenticated();
next();
})
const asyncMiddleware = fn =>
(req, res, next) => {
Promise.resolve(fn(req, res, next))
.catch(next);
};
app.get('/user-info', asyncMiddleware(async (req, res) => {
const userInfo = await req.oidc.fetchUserInfo();
res.json(userInfo);
}))
...
虽然当我转到地址 localhost:5000/user-info 时我 运行 出错了:
GET /user-info 500 859.666 ms - 736
TypeError: access_token not present in TokenSet
at Client.requestResource (/mnt/ALPHA/Projects/rajusite/server/node_modules/openid-client/lib/client.js:1022:15)
at Client.userinfo (/mnt/ALPHA/Projects/rajusite/server/node_modules/openid-client/lib/client.js:1121:33)
at RequestContext.fetchUserInfo (/mnt/ALPHA/Projects/rajusite/server/node_modules/express-openid-connect/lib/context.js:153:19)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async /mnt/ALPHA/Projects/rajusite/server/routes.js:111:22
我知道这是关于丢失的令牌,它不会让我获得用户的信息。
我检查过 Getting access token for Auth0 with Express 但它已经启用了。
您需要指定要访问的范围(例如“openid 电子邮件配置文件...”),但在您的代码中我没有看到。如果您不要求任何访问权限,那么您将不会获得任何访问令牌。
查看代码示例here