#node.js #azure-active-directory #dynamics-crm
#node.js #azure-active-directory #динамика-crm
Вопрос:
У меня возникли некоторые проблемы с вызовом методов Dynamics Web Api.
С помощью Adal я получаю токен, работает плавно
function acquireToken(dynamicsWebApiCallback){
//a callback for adal-node
function adalCallback(error, token) {
if (!error){
//call DynamicsWebApi callback only when a token has been retrieved
tokenTemp=token.accessToken;
dynamicsWebApiCallback(token);
callback(null,tokenTemp);
}else{
console.log('Token has not been retrieved. Error: ' error.stack);
callback(error,null);
}
}
//call a necessary function in adal-node object to get a token
adalContext.acquireTokenWithClientCredentials(resource, clientId, secret, adalCallback);
}
Но, после получения токена, я пробую функцию WhoAmI и терплю неудачу
var dynamicsWebApi = new DynamicsWebApi({
webApiUrl: resource '/api/data/v9.1/',
onTokenRefresh: acquireToken
});
//call any function
dynamicsWebApi.executeUnboundFunction("WhoAmI").then(function (response) {
console.log('Hello Dynamics 365! My id is: ' response.UserId);
callback(null,tokenTemp);
}).catch(function(error){
console.log(error);
callback(error,null);
});
ОШИБКА:
{ код: ‘0x80072560’, сообщение: ‘Пользователь не является членом организации.’, статус: 403, statusMessage: ‘Запрещено’, заголовки: ‘[Объект]’ }
Я дважды проверил клиента каталога, идентификатор клиента, секретный ключ. Все в порядке.
Вводя неправильные параметры, я не могу правильно создать токен. Итак … все в порядке
Есть идеи?
С уважением
Комментарии:
1. используя quid, который вы получаете от
response.UserId
can, вы можете запроситьhttps://YOURORG.api.dynamics.com/api/data/v9.1/systemusers(YOURUSRID)?
, что ваш токен может быть из другой среды2. Причина может быть в том, что вы не создали пользователя приложения для потока учетных данных клиента. Пожалуйста, проверьте шаг 3 в этой статье : 3. Создайте нового пользователя приложения Dynamics 365 . Дайте мне знать, если это поможет.
3. Как упоминалось в комментарии, похоже, у вас нет пользователя приложения, созданного в D365. Создайте пользователя приложения и назначьте ему соответствующие права. Дайте мне знать, если это поможет.
4. Правильно, необходимо создать пользователя приложения с идентификатором приложения и назначить необходимые роли.
Ответ №1:
Чтобы решить эту проблему, необходимо создать пользователя приложения с application_id и (важно) назначить все необходимые роли.
Более подробная информация здесь: