Я следую примеру кода, расположенного по адресу https://nickvandenheuvel.eu/tag/adal-js/, но мой код завершается ошибкой при подключении SharePoint с ошибкой ADAL AADSTS500011.
Сообщение об ошибке гласит: «Участник ресурса с именем https://my.sharepoint.com/sites/mysite не найден в клиенте с именем mytenant.onmicrosoft.com. Это может произойти, если приложение не было установлено администратором клиента».или с согласия любого пользователя в клиенте. Возможно, вы отправили запрос аутентификации не тому арендатору. "
Мой код точно такой же, как в статье.Я думаю, что, возможно, что-то нужно сделать с моей регистрацией Azure для моего сайта SharePoint, или код устарел из-за того, как теперь работают Office 365 и SharePoint.
// Assign variables
var variables = {
// Domain of Azure AD tenant
azureAD: "tenantname.onmicrosoft.com",
// ClientId of Azure AD application principal
clientId: "11111111-1111-1111-1111-111111111111",
// GUID of SharePoint list
listId: "22222222-2222-2222-2222-222222222222",
// Name of SharePoint tenant
sharePointTenant: "tenantname"
}
// Create config and get AuthenticationContext
window.config = {
tenant: variables.azureAD,
clientId: variables.clientId,
postLogoutRedirectUri: window.location.origin,
endpoints: {
graphApiUri: "https://graph.microsoft.com",
sharePointUri: "https://" + variables.sharePointTenant + ".sharepoint.com",
},
cacheLocation: "localStorage"
};
var authContext = new AuthenticationContext(config);
var user = authContext.getCachedUser();
if (!user) {
authContext.login();
}
// Get OneDrive documents of current user with AuthenticationContext of Graph API
authContext.acquireToken(config.endpoints.graphApiUri, function (error, token) {
if (error || !token) {
console.log("ADAL error occurred: " + error);
return;
}
else {
var filesUri = config.endpoints.graphApiUri + "/v1.0/me/drive/root/children";
$.ajax({
type: "GET",
url: filesUri,
headers: {
"Authorization": "Bearer " + token
}
}).done(function (response) {
console.log("Successfully fetched files from OneDrive.");
var items = response.value;
for (var i = 0; i < items.length; i++){
console.log(items[i].name);
$("#OneDrive").append("<li>" + items[i].name + "</li>");
}
}).fail(function () {
console.log("Fetching files from OneDrive failed.");
});
}
});
// Get SharePoint documents of list with AuthenticationContext of SharePoint
authContext.acquireToken(config.endpoints.sharePointUri, function (error, token) {
if (error || !token) {
console.log("ADAL error occurred: " + error);
return;
}
else {
var listUri = config.endpoints.sharePointUri + "/_api/web/lists('" + variables.listId + "')/items?$select=Title";
$.ajax({
type: "GET",
url: listUri,
headers: {
"Authorization": "Bearer " + token,
"accept": "application/json;odata=verbose"
}
}).done(function (response) {
console.log("Successfully fetched list from SharePoint.");
var items = response.d.results;
for (var i = 0; i < items.length; i++){
console.log(items[i].Title);
$("#SharePoint").append("<li>" + items[i].Title + "</li>");
}
}).fail(function () {
console.log("Fetching list from SharePoint failed.");
});
}
});
Я могу сказать, что код работает для остальных API и OneDrive.Он также работает для получения информации о пользователях из Azure AD.Сообщение об ошибке появляется только при попытке взаимодействия с сайтом SharePoint.Я не уверен, что код не соответствует тому, как ADAL взаимодействует с SharePoint, или что-то в Azure AD необходимо настроить.Поскольку взаимодействие с OneDrive, похоже, работает, я предполагаю, что Azure AD не является проблемой (поскольку я не могу вспомнить, что нужно было что-то настраивать в Azure AD для OneDrive).