我正尝试使用请求发送POST请求来获取Microsoft-Graph应用程序的访问令牌。 问题是我作为响应获得的令牌只有1188个字符长。当我使用邮递员时获得的令牌长度为1461个字符。每次我发送请求时,都会生成一个全新的令牌,但是在nodejs中,我通过请求获得的令牌始终为1188,而在邮递员中的请求令牌始终为1461。
我尝试了不同的方法,例如在Microsoft Azure中生成新的应用程序api id,但是它始终给出相同的结果。
这是我的代码,尽管我用CENSORED代替了敏感信息。 我在Postman中使用了完全一样的请求参数
const endpoint = "https://login.microsoftonline.com/CENSORED/oauth2/token";
const requestParams = {
client_id: "CENSORED",
client_secret: "CENSORED",
resource: "https://graph.windows.net",
grant_type: "client_credentials"
};
let accessToken = await
request.post({
url: endpoint,
form: requestParams
}, function (err, response, body) {
if (err) {
console.log("error");
} else {
console.log("Body=" + body);
let parsedBody = JSON.parse(body);
if (parsedBody.error_description) {
console.log("Error=" + parsedBody.error_description);
} else {
getCalendarEvents(parsedBody.access_token);
}
}
});
Postman返回1461个字符长的访问令牌,而nodejs请求仅返回1188个字符长的访问令牌。
这是我在Node.js中使用的:https://www.npmjs.com/package/request
答案 0 :(得分:1)
资源"compileOnSave": false, // does not matter if true or false
"compilerOptions": {
"module": "none",
"noImplicitAny": true,
"noEmitOnError": true,
"sourceMap": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"target": "es2015",
"lib": [
"es2015",
"es5",
"dom"
],
"outDir": "wwwroot/js/gen-ts",
"typeRoots": [
"./wwwroot/lib/@types"
]
},
"include": [
"./Scripts"
]
用于旧版Azure AD Graph API。这是与the Microsoft Graph完全独立的API。对于Microsoft Graph,https://graph.windows.net
应该为resource
:
https://graph.microsoft.com
答案 1 :(得分:0)
显然,资源参数应为https://graph.microsoft.com,而不是https://graph.windows.net。