【发布时间】:2021-03-01 17:08:34
【问题描述】:
我在调用 Dynamics Web Api 的方法时遇到了一些麻烦。
有了阿达尔,我得到了令牌,工作顺利
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', message: '该用户不是该组织的成员。', 状态:403, statusMessage: '禁止', 标题:'[对象]' }
我仔细检查了目录租户、客户端 ID、密钥。没关系。
输入错误的参数,我无法正确创建令牌。所以……没关系
有什么想法吗?
亲切的问候
【问题讨论】:
-
使用您从
response.UserId获得的报酬,您可以查询https://YOURORG.api.dynamics.com/api/data/v9.1/systemusers(YOURUSRID)?您的令牌可能来自另一个环境 -
原因可能是您没有为客户端凭据流创建应用程序用户。请检查此article: 3 中的第 3 步。创建一个新的 Dynamics 365 应用程序用户。如果有帮助,请告诉我。
-
如评论中所述,您似乎没有在 D365 中创建应用程序用户。创建应用程序用户并为其分配适当的权限。让我知道这是否有帮助。
-
正确,需要使用应用程序ID创建应用程序用户并分配必要的角色。
标签: node.js azure-active-directory dynamics-crm