[OData调用D365FO的401

问题描述 投票:0回答:1

我正在尝试进行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中的任何地方查找尝试记录吗?

oauth-2.0 azure-active-directory odata microsoft-dynamics php-curl
1个回答
0
投票

resource似乎不正确。它应该是实例的基本URL,不带结尾的'/'。

您的“ aud”字段为https://erp.dynamics.com。在这种情况下,它应该是您的[root URL]。像这样:

enter image description here

resource发布请求时检查https://login.microsoftonline.com/[tenant ID]/oauth2/token。>

© www.soinside.com 2019 - 2024. All rights reserved.