尽管已获得有效令牌,但仍从Dynamics 365取回401

时间:2020-02-13 22:27:20

标签: api dynamics-crm postman dynamics-365

我正在尝试重写当前使用JavaScript连接到Dynamics 365的客户端应用程序

let URL = "https://<company-name>.operations.dynamics.com/data/FinancialDimensionValues?cross-company=true";
let  body = '';
var headers = {'Content-Type':'application/json'};
let response = ai.https.authorizedRequest(URL, 'GET', body, headers);

当前,此JavaScript应用程序可以运行并获取JSON数据。我正在尝试使用C#重写此应用程序。我首先从Postman开始,以确保在进行C#代码编写之前,我已经完成所有身份验证步骤。

使用邮递员,我可以使用“客户端凭据”流程成功获取JWT令牌,在该流程中,我将客户端ID和客户端密钥传递给访问令牌请求URL。但是,当尝试访问Dynamics 365中的API终结点时,即使我正确传递了JWT访问令牌,我也会收到HTTP 401。

这是访问令牌请求URL:

https://login.microsoftonline.com/722b0db7-9629-4304-92a0-dfb4a1debe62/oauth2/token?resource=https://<company-domain-here>.dynamics.com

我认为我必须进行正确的身份验证,否则我将无法取回有效的访问令牌。另外,由于已经存在的JavaScript应用程序可以正常工作,所以我假设已正确配置Dynamics 365以允许API访问。

我要弄清楚的是我在邮递员内可能做错了什么,导致我收到401?工作的JavaScript请求与我通过邮递员发送的请求之间可能有什么区别?

1 个答案:

答案 0 :(得分:1)

问题终于解决了。 如前所述,遵循documentation

如果您遇到401错误,这是最后一个把戏。

在“授权下的邮递员”中->将授权数据添加到->选择“请求标题”。

现在触发查询,您将获得200的确认。

enter image description here

Ref这篇文章帮助了我。