Recherche d'un appel REST via SP.WebRequestInfo de SharePoint.Azure Active Directory Graph Appel REST api via SP.WebRequestInfo sur SharePoint Online
Je reçois l'erreur "Le serveur distant a renvoyé l'erreur suivante lors de l'établissement d'une connexion -" Non autorisé "." essayer d'appeler https://graph.windows.net/[Client]/users?api-version=2013-11-0.
J'ai réussi à récupérer un jeton d'accès.
Pouvez-vous m'aider pourquoi je reçois cette erreur?
Voici le code que je utilise:
var url = "https://graph.windows.net/xxx/users/?api-version=2013-11-08";
var context = SP.ClientContext.get_current();
var request = new SP.WebRequestInfo();
request.set_url(url);
request.set_method("GET");
request.set_headers({
"Authorization": token.token_type + " " + token.access_token,
"Content-Type": "application/json"
});
var response = SP.WebProxy.invoke(context, request);
context.executeQueryAsync(successHandler, errorHandler);
function successHandler() {
if (response.get_statusCode() == 200) {
var responseBody = JSON.parse(response.get_body());
deferred.resolve(responseBody);
} else {
var httpCode = response.get_statusCode();
var httpText = response.get_body();
deferred.reject(httpCode + ": " + httpText);
}
}
Le code pour récupérer le jeton est:
this.getToken = function (clientId, clientSecret) {
var deferred = $q.defer();
var resource = "https://graph.windows.net";
var formData = "grant_type=client_credentials&resource=" + encodeURIComponent(resource) + "&client_id=" + encodeURIComponent(clientId) + "&client_secret=" + encodeURIComponent(clientSecret);
var url = "https://login.windows.net/xxxxxx.onmicrosoft.com/oauth2/token?api-version=1.0";
var context = SP.ClientContext.get_current();
var request = new SP.WebRequestInfo();
request.set_url(url);
request.set_method("POST");
request.set_body(formData);
var response = SP.WebProxy.invoke(context, request);
context.executeQueryAsync(successHandler, errorHandler);
function successHandler() {
if (response.get_statusCode() == 200) {
var token = JSON.parse(response.get_body());
deferred.resolve(token);
} else {
var httpCode = response.get_statusCode();
var httpText = response.get_body();
deferred.reject(httpCode + ": " + httpText);
}
}
function errorHandler() {
deferred.reject(response.get_body());
}
return deferred.promise;
};
Azure AD Graph API accepte les jetons d'accès avec l'audience 'https://graph.windows.net/'. S'il vous plaît montrez-moi le code qui acquiert le jeton. –
@DushyantGill J'ai mis à jour la question avec le code qui acquiert le jeton. –