【发布时间】:2021-07-08 21:12:17
【问题描述】:
我正在为我崭露头角的 Alexa 技能创建 OAuth 2.0 服务,当我使用 NeDB 从客户端数据库获取客户端时,没有回调。
getClient()
module.exports.getClient = async (clientId, clientSecret) => {
let params = {clientId}
let result;
console.log("get client")
function findClient(params) {
return new Promise((resolve, reject) => {
console.log(params)
clients.loadDatabase()
console.log('loaded')
clients.findOne(params, function(err, doc) { // no callback here
console.log('before reject')
if (err) return reject(err)
console.log("callback")
if (doc.clientSecret) {
let secret = doc.clientSecret
let id = doc.clientId
resolve({clientSecret: secret, clientId: id})
} else {
resolve({clientId: doc.oauth.clientId})
}
})
console.log('does it even exec?')
})
}
console.log(clientSecret)
if (clientSecret) {
params.clientSecret = clientSecret
}
result = await findClient(params)
console.log(result)
return result;
}
这是我提出的要求:
client_id=1
client_secret=secret123
username=testUser
password=testPass
最后是特快路线:
app.post('/oauth/authenticate', (req, res, next) => {
users.findOne({name: req.body.username}, (err, doc) => {
if (err) throw err;
req.body.user = doc
next();
})
}, oauth.authorize({
authenticateHandler: {
handle: req => {
return req.body.user
}
}
}))
编辑:在加载数据库时添加回调时,出现此错误:
loadDatabase Error: More than 10% of the data file is corrupt, the wrong beforeDeserialization hook may be used. Cautiously refusing to start NeDB to prevent dataloss
谢谢!
【问题讨论】:
-
您的特快专线电话不是
getClient吗?或者getClient和显示的快速回调之间应该是什么关系? -
我正在使用一个名为
express-oauth2-server的快速包装器。您可以查看包裹here。 -
“没有回调”是否意味着它既不记录
before reject也不记录callback,对吗? -
正确。它记录“它甚至执行吗?”但没有“回调”
-
谢谢。那行得通。
标签: node.js express oauth-2.0 nedb