Итак, мне нужно создать календарь в формате html, который получает события из Outlook, а затем развернуть его как пользовательскую страницу в Sharepoint, чтобы его можно было включить в качестве веб-части / iframe в семейства сайтов.
Проблема в том, что я пытался добавить защиту ADAL, потому что вам нужно войти в систему и отправить токен в Microsoft Exchange Online API для получения событий календаря и т. Д. Чтобы отобразить часть календаря, яиспользуя FullCalendar.io.
Теперь я продолжаю получать цикл входа / перенаправления, который никогда не заканчивается.Кто-нибудь видит ошибку в коде?Вот оно:
var $this = this;
$(document).ready(function() {
debugger;
window.config = {
tenantId: {tenant},
clientId: {clientid},
popUp: true,
callback: callbackFunction,
redirectUri: {custom aspx page URL on our Sharepoint},
cacheLocation: 'localStorage'
};
var authenticationContext = new AuthenticationContext(config);
authenticationContext.handleWindowCallback();
function callbackFunction(errorDesc, token, error, tokenType) {
alert('callbackFunction reached!');
}
var items = null;
if (authenticationContext.TokenCache) {
items = authenticationContext.TokenCache.ReadItems();
}
if (authenticationContext['_user']) {
authenticationContext.acquireToken(config.clientId, function (errorDesc, token, error) {
if (error) { //acquire token failure
if (config.popUp) {
// If using popup flows
authenticationContext.acquireTokenPopup(config.clientId, null, null, function (errorDesc, token, error)
{});
}
else {
// In this case the callback passed in the Authentication request constructor will be called.
authenticationContext.acquireTokenRedirect(config.clientId, null, null);
}
}
else {
//acquired token successfully
// alert('token success');
$this.DisplayEvents(token);
}
});
}
else {
// Initiate login
authenticationContext.login();
}
});
function DisplayEvents(adalToken) {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay,listWeek'
},
navLinks: true, // can click day/week names to navigate views
editable: true,
eventLimit: true, // allow "more" link when too many events
events: function(start, end, timezone, callback) {
var headers = new Headers();
var bearerToken = "Bearer " + adalToken;
headers.append('Authorization', bearer);
var options = {
method: 'GET',
headers: headers
};
var exchangeEndpoint = 'https://outlook.office.com/api/v2.0/me/events';
fetch(exchangeEndpoint, options).then(function (response) {
alert('Response data from successful call: ' + response);
});
}
});
}
Таким образом, код получает «получить токен», а затем последний «остальное», поэтому вызывается «$ this.DisplayEvents (token)»!Однако после получения токена приложение продолжает перенаправлять навсегда… URL-адрес ответа в моей регистрации приложения Azure AD также является значением redirectURL window.config, иначе я получу сообщение об ошибке, в котором URL-адрес ответа несоответствие между запросом и Azure.
Кто-нибудь знает, где что-то идет не так?