Добавить участника в группу Office 365 с помощью JSON/JavaScript
Я пытаюсь добавить пользователя, который нажимает на кнопку на сайте SharePoint (онлайн) в группу Office 365. Я знаю, что это можно сделать с помощью JSON, используя Add Member API.
Я, однако, действительно неопытен, когда дело доходит до JSON и постоянно портит функцию POST. Это код, который у меня есть сейчас, все до запятой работало нормально.
function showButton() {
$('btn-1').on('click', function(event) {
var userProfileProperties
var clientContext = new SP.ClientContext.get_current();
var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);
userProfileProperties = peopleManager.getMyProperties();
clientContext.load(userProfileProperties);
clientContext.executeQueryAsync(onSuccess, onFail);
function onSuccess(){
accountProperties = userProfileProperties.get_userProfileProperties();
accountId = accountProperties['msOnline-ObjectId'];
//JSON Query
jQuery.ajax({
url: "https://mysite.sharepoint.com/groups/groupID/members/$ref";
method: "POST";
contentType: "application/json";
dataType: 'json',
{
"@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/" + accountId
};
});
};
function onFail(){
alert(failed);
};
});
};
1 ответ
В вашем документе вы найдете токен аутентификации, необходимый в заголовках запроса. Без токена аутентификации вы получите сообщение об ошибке:
"code": "InvalidAuthenticationToken", "message": "Bearer access token is empty."
В качестве решения вы можете попробовать следующие шаги:
1. Зарегистрируйте приложение javascript в Azure AD и настройте свое приложение, чтобы разрешить поток неявного предоставления OAuth 2.0. Токены получены с использованием потока неявного предоставления OAuth 2.0. Используя неявное разрешение, ваше приложение запрашивает токен доступа из Azure AD для текущего пользователя, вошедшего в систему, отправляя пользователю URL-адрес авторизации, где пользователь выполняет вход со своими учетными данными Office 365, а затем перенаправляется обратно в приложение с токеном доступа. в URL.
2.Добавить разрешения для Graph API.
3. Добавьте html-страницу к своей точке доступа в Интернете (в режиме проводника).
4. Измените HTML, напишите ниже функцию, чтобы получить токен доступа:
function requestToken() {
// Change clientId and replyUrl to reflect your app's values
// found on the Configure tab in the Azure Management Portal.
// Also change {your_subdomain} to your subdomain for both endpointUrl and resource.
var clientId = '3dadb44e-feaa-4158-90f5-e129e15db66d';//ID of your App in Azure
var replyUrl = 'https://o365e3w15.sharepoint.com/sites/XXX/app.html'; //my sharepoint page that requests
//an oauth 2 authentification and data
//It is also referenced in the REPLY URL field of my App in Azure
var endpointUrl = 'https://graph.microsoft.com/v1.0/me/messages';
var resource = "https://graph.microsoft.com/";
var authServer = 'https://login.windows.net/common/oauth2/authorize?';
//var authServer = 'https://login.microsoftonline.com/common/oauth2/authorize?';//this works either
var responseType = 'token';
var url = authServer +
"response_type=" + encodeURI(responseType) + "&" +
"client_id=" + encodeURI(clientId) + "&" +
"resource=" + encodeURI(resource) + "&" +
"redirect_uri=" + encodeURI(replyUrl);
window.location = url;
}
После этого вы можете сделать ajax-вызов конечной точки Graph API для получения / отправки запроса, например, для получения сообщений текущего пользователя:
var endpointUrl = "https://graph.microsoft.com/v1.0/me/messages"; var xhr = new XMLHttpRequest(); xhr.open("GET", endpointUrl); var myToken = getToken(); // The APIs require an OAuth access token in the Authorization header, formatted like this: //'Authorization: Bearer <token>'. xhr.setRequestHeader("Authorization", "Bearer " + myToken); // Process the response from the API. xhr.onload = function () { if (xhr.status == 200) { //alert('data received'); var message=""; var object = JSON.parse(xhr.response); for(i=0;i<object.value.length;i++){ message+='Subject: ' + object.value[i].subject + '<br>'; } document.getElementById("results").innerHTML = message; } else { } } // Make request. xhr.send();
отобразить этот app.html на любой странице веб-части SharePoint, вызвав ее в теге iframe.
Все подробные шаги вы найдете в этой статье, я проверил и отлично работаю в мою сторону.