OData 调用 D365FO 时出现 401
401 on OData call to D365FO
我正在尝试进行 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 注册字段相匹配
- 其"roles"字段仅包含"Connector.FullAccess"
- 我在 PHP 中使用 curl 来发出 OData GET 请求。我使用上面列出的 URL 而我的 headers 是
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'OData-MaxVersion: 4.0',
'OData-Version: 4.0',
'Authorization: Bearer ' . $this->accessToken
]);
响应是“401 未经授权”
有谁知道出了什么问题,或者我如何才能找到有关失败的更多信息?我可以在 D365FO 的任何地方查找我的尝试日志吗?
resource
似乎不正确。它应该是实例的基础 URL,没有尾随 '/'。
您的 "aud" 字段是 https://erp.dynamics.com
。在这种情况下,它应该是您的 [root URL]。像这样:
当您 post 请求 https://login.microsoftonline.com/[tenant ID]/oauth2/token
时检查您的 resource
。
我正在尝试进行 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 注册字段相匹配
- 其"roles"字段仅包含"Connector.FullAccess"
- 我在 PHP 中使用 curl 来发出 OData GET 请求。我使用上面列出的 URL 而我的 headers 是
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'OData-MaxVersion: 4.0',
'OData-Version: 4.0',
'Authorization: Bearer ' . $this->accessToken
]);
响应是“401 未经授权”
有谁知道出了什么问题,或者我如何才能找到有关失败的更多信息?我可以在 D365FO 的任何地方查找我的尝试日志吗?
resource
似乎不正确。它应该是实例的基础 URL,没有尾随 '/'。
您的 "aud" 字段是 https://erp.dynamics.com
。在这种情况下,它应该是您的 [root URL]。像这样:
当您 post 请求 https://login.microsoftonline.com/[tenant ID]/oauth2/token
时检查您的 resource
。