我想在Javascript中获取我的任务并可能添加新的任务,但我们要专注于获取任务。
我创建了一个应用程序并使用msal.js文件来获取令牌。我被提示允许应用程序从我的帐户读取/写入,弹出窗口关闭,我已获得令牌!
到目前为止一切顺利,但是当我尝试获取任务时,API会响应"未经授权的"。当我检查标题时,我可以看到我发送了#34; bearer [token]"但是。
我完全不知道如何完成任务,因为我确实得到了正确的令牌,并且我已按照指导设置确保我发送令牌。
在我的应用中(我在https://apps.dev.microsoft.com创建)我已经设置了所有与任务相关的权限和User.read以获得良好的衡量标准。至于平台我已经设置了#34; Web"。
我的初始化方法:
const self = this
this.userAgentApplication = new Msal.UserAgentApplication(this.clientID, null, function (errorDes, token, error, tokenType) {
// this callback is called after loginRedirect OR acquireTokenRedirect (not used for loginPopup/aquireTokenPopup)
})
this.userAgentApplication.loginPopup(['Tasks.readwrite']).then(function (token) {
let user = self.userAgentApplication.getUser()
if (user) {
self.token = token
localStorage.setItem('token', token)
self.getTasks()
}
}, function (error) {
console.log(error)
})
我的getTasks方法:
const bearer = 'Bearer ' + this.token
let headers = new Headers()
headers.append('Authorization', bearer)
let options = {
method: 'GET',
headers: headers
}
// Note that fetch API is not available in all browsers
fetch('https://outlook.office.com/api/v2.0/me/tasks', options).then(function (response) {
let contentType = response.headers.get('content-type')
if (response.status === 200 && contentType && contentType.indexOf('application/json') !== -1) {
response.json().then(function (data) {
console.log(data)
})
.catch(function (error) {
console.log(error)
})
} else {
response.json().then(function (data) {
console.log(data)
})
.catch(function (error) {
console.log(error)
})
}
})
.catch(function (error) {
console.log(error)
})
答案 0 :(得分:1)
您的令牌的范围是图表,而不是Outlook。 Tasks.readwrite
将默认使用Microsoft Graph,并且不会对Outlook端点起作用。
改变这一位:
this.userAgentApplication.loginPopup(['Tasks.readwrite'])
要:
this.userAgentApplication.loginPopup(['https://outlook.office.com/Tasks.readwrite'])
答案 1 :(得分:0)
您正在尝试使用Microsoft Graph,因此请求应如下所示
GET https://graph.microsoft.com/beta/users/{id|userPrincipalName}/outlook/tasks
这里记录了:https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/outlookuser_list_tasks
我相信你有一个Microsoft Graph令牌但是你试图在Outlook REST端点上使用它,这是行不通的。