Проблема с подключением к Dynamics Web Api после получения токена (node.js )

#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 и (важно) назначить все необходимые роли.

Более подробная информация здесь:

https://docs.microsoft.com/en-us/power-platform/admin/create-users-assign-online-security-roles#create-an-application-user