我正在使用Microsoft Graph REST API v1.0开发Outlook Web加载项。经过大量搜索,包括Microsoft的文档,并最终能够使用加载项进行授权并获得“ access_token”,但由于获取用户的“日历”以及“日历事件”而陷入困境,其中包括使用以下代码重复发生的事件
//// for all calendar label
var _token="xyz..123";
$.ajax({
url: "https://graph.microsoft.com/v1.0/me/calendars",
headers: {
'outlook.body-content-type': 'text/html',
'Authorization': 'Bearer ' + token
},
type: 'GET'
}).done(function (data) {
//// success
}).fail(function (error) {
//// error
});
//// for calendar events
var _token="xyz..123";
$.ajax({
url: "https://graph.microsoft.com/v1.0/me/calendar/events",
headers: {
'outlook.body-content-type': 'text/html',
'Authorization': 'Bearer ' + token
},
type: 'GET'
}).done(function (data) {
//// success
}).fail(function (error) {
//// error
});
ref:https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_list_events
我收到此错误消息
{
"error": {
"code": "InvalidAuthenticationToken",
"message": "CompactToken parsing failed with error code: 80049217",
"innerError": {
"request-id": "55ea48c0-5d10-423b-9f41-d48d5b1d9454",
"date": "2018-10-01T14:41:05"
}
}
}
请指出我做错了什么地方?谢谢
更新
按照@Lina的建议,我尝试了此方法并切换到Outlook REST API v2.0
Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, function (result) {
if (result.status === "succeeded") {
var accessToken = result.value;
// Use the access token
} else {
// Handle the error
}
});
获得accessToken =“ 123..abc”; 之后,我尝试以这种方式访问日历和事件
// get calendars
$.ajax({
url: 'https://outlook.office.com/api/v2.0/me/calendars' ,
dataType: 'json',
headers: { 'Authorization':'Bearer ' +access_token}
}).done(function (items) {
//sucess;
}).fail(function (error) {
//error
});
// get events
$.ajax({
url: 'https://outlook.office.com/api/v2.0/me/events' ,
dataType: 'json',
headers: { 'Authorization':'Bearer ' +access_token}
}).done(function (items) {
//sucess;
}).fail(function (error) {
//error
});
在上述两个请求中,我都收到了此错误
"{"error":{"code":"ErrorAccessDenied","message":"The api you are trying to access does not support item scoped OAuth."}}"
相关:Access to Outlook RestAPI from an Outlook web Add-in
帮我解决我所缺少的东西。是否有任何“许可”或“参数”问题? 谢谢
答案 0 :(得分:0)
如果您使用getAccessTokenAsync
方法来获取“ access_token”,则应使用以下所示的请求:
从用户的主日历(../me/events)或其他日历中获取系列主事件和单实例事件的集合。要获取扩展的事件实例,您可以获取日历视图或事件的实例。
GET https://outlook.office.com/api/v2.0/me/events
GET https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}/events
有关更多信息,请参见下面的链接: