在OData上调用401到D365FO

时间:2019-12-28 14:16:26

标签: oauth-2.0 azure-active-directory odata microsoft-dynamics php-curl

我正在尝试进行OData调用以检索D365FO数据实体。
https://[root_URL]/data/CostGroups
在我的浏览器中登录D365FO时,此调用有效。

  • 我正在使用PHP。
  • 我已经在Azure Active Directory中注册了我的应用。
  • 我已为我的应用提供了https://erp.dynamics.com/Connector.FullAccess API权限。
  • 我已经在具有管理员权限的用户(用于成功的浏览器调用的用户)中在D365FO中注册了我的应用。
  • 我能够获取身份验证令牌。
    • 其“ aud”字段为“ https://erp.dynamics.com
    • 其“ appid”字段与应用程序的Azure AD注册的字段匹配
    • 其“角色”字段仅包含“ Connector.FullAccess”
  • 我在PHP中使用curl来发出OData GET请求。我使用上面列出的URL,并且标题是
curl_setopt($curl, CURLOPT_HTTPHEADER, [
    'Accept: application/json',
    'OData-MaxVersion: 4.0',
    'OData-Version: 4.0',
    'Authorization: Bearer ' . $this->accessToken
]);

响应为“ 401未经授权”

有人知道出了什么问题吗,或者我如何找到有关该故障的更多信息?我可以在D365FO中的任何地方查找尝试记录吗?

1 个答案:

答案 0 :(得分:1)

wget.download(url) 似乎不正确。它应该是实例的基本URL,不带结尾的'/'。

您的“ aud”字段为npm -g install npm@version npm install -g create-react-app 。在这种情况下,它应该是您的[root URL]。像这样:

enter image description here

在向resource发送请求时检查您的https://erp.dynamics.com