我尝试通过ajax调用使用Microsoft graph api来获取计划程序数据,但我收到https://graph.microsoft.com/v1.0/me/planner/tasks 400(错误请求):
function requestToken() {
$.ajax({
"async": true,
"crossDomain": true,
"url": "https://cors-anywhere.herokuapp.com/https://login.microsoftonline.com/common/oauth2/v2.0/token", // Pass your tenant name instead of sharepointtechie
"method": "POST",
"headers": {
"content-type": "application/x-www-form-urlencoded"
},
"data": {
"grant_type": "client_credentials",
"client_id ": "--REDACTED--", //Provide your app id
"client_secret": "--REDACTED--",
//Provide your client secret genereated from your app
"scope ": "https://graph.microsoft.com/.default"
},
success: function (response) {
console.log(response);
token = response.access_token;
$.ajax({
url: 'https://graph.microsoft.com/v1.0/me/planner/tasks',
type: 'GET',
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Bearer '+token+'');
},
data: {},
success: function (results) {
console.log(results);
debugger;
},
error: function (error) {
console.log("Error in getting data: " + error);
}
});
}
})
}
从计划程序中查找json数据,但得到错误代码 从图形API提取https://graph.microsoft.com/v1.0/me/planner/tasks 400(错误请求)。
答案 0 :(得分:0)
首先,您现在共享的代码存在几个主要问题:
您不应使用客户端凭据授予(即clientId和客户端机密)从客户端JavaScript代码对Microsoft Graph API进行调用,它仅适用于诸如守护程序或服务之类的机密客户端。
无论如何,您都想尝试使用https://graph.microsoft.com/v1.0/me/planner/tasks
结束语,其中包括仅对用户身份有效的关键字me
。因此,您应该尝试使用当前登录用户的身份获取令牌,或者如果用户未登录则提示用户。
您可以使用Microsoft Graph JavaScript Client Library来调用Microsoft Graph。
客户端库的链接还提供了带有示例代码的良好分步指南。
注意:请不要将您的客户端密码或任何其他敏感信息作为对stackoverflow问题的一部分。我现在将编辑问题,但您仍应为您的应用程序删除此特定机密,并为以后的使用生成新的机密。