我在一个Azure帐户上发布了一个机器人,我正在尝试将魔术代码取出,因此遵循直接行文档,我改进了代码以隐藏令牌。但是,一旦启用了增强的身份验证选项,我总是会得到相同的响应。
{
"error": {
"code": "BadArgument",
"message": "tokenParameters is missing User."
}
}
我无法弄清楚如何使用用户数据完成HTTP请求。
该机器人基于Botframework SDK V4,以及一些用于使用包裹的秘密密钥请求和刷新令牌的控制器。我将 userId 数据添加到请求中,以不同的方式和错误的方式获得相同的结果。
请求令牌代码
server.post('/dl/tokenRequest', async (_, res) => {
try {
const userId = "dl_testuser1";
const askToken = await fetch('https://directline.botframework.com/v3/directline/tokens/generate', {
headers: {
authorization: Bearer ${ process.env.DIRECT_LINE_SECRET }
},
//HERE THE userId INFORMATION,
method: 'POST'
});
const json = await askToken.json();
if ('error' in json) {
console.log('Requesting token - Error');
res.send(500);
} else {
console.log(`Requesting token ` + json.token);
res.send(json);
}
} catch (err) {
res.send(500);
}
});
在启用增强工具之前,我应该如何将用户的信息从DL API中获取OK?
看来您缺少标题中的Content-Type
。查看下面的代码段。
try {
const res = await fetch('https://directline.botframework.com/v3/directline/tokens/generate',
{
method: 'POST',
headers: {
'Authorization': `Bearer <SECRET>`,
'Content-Type': 'application/json'
},
body: {
user: {
id: "dl_123", // user id must start with 'dl_'
name: "user"
}
}
});
const json = await res.json();
} catch (error) {
console.log(error)
}
请注意,您不必检查是JSON响应中的"错误" - Try -Catch块应该考虑到这一点。
希望这会有所帮助!