问题描述
Dynamics 365 显然是一个很大的话题,我对此知之甚少。
如果我想使用自动化流程访问 D356 中的少数 Web 服务端点,是否有替代 AAD/OAuth 进行身份验证的方法?到目前为止,我遇到的示例并未涉及自动/非交互式 D365 API 访问。
This question 与我的类似,但接受的解决方案(基本身份验证/Web 服务访问密钥)is going away soon。它还指的是“连接应用程序”和 I'm thinking I'd rather hit an API directly。
上下文:目前,我有一个到本地 NAV DB 的自动单向同步,它在发生更改时直接更新少数数据库表 - 这并不复杂。一旦我的 IT 部门将他们的 NAV DB 迁移到 MS Dynamics 360,我就需要重新实施它。
我了解 BC tables/objects can be exposed as web service end-points,并且我希望可以通过 Web-API 访问 (OData) 访问我当前正在直接更新的表。
但是,身份验证似乎是一个问题。 D365 指南似乎是 OAuth(授权代码授予),鉴于其交互性,它不会立即适用于自动化流程。有替代品吗?
解决方法
简短的回答:通过 Azure 应用注册进行 OAuth 是使用 Business Central API 进行身份验证的唯一选择。
根据您需要更新哪些表,您可能需要为 Business Central 创建一个扩展,通过 API 页面公开相关表。直接写入数据库没有捷径。
如果您已经在创建扩展,您还可以考虑将数据从源提取到 Business Central。然后您可以使用您选择的身份验证方法(如果您可以完全控制源系统)。
一个变通的解决方案可能是 https://discordpy.readthedocs.io/en/latest/api.html,但它的性能不会很好。这取决于所需的更新频率。
最后但并非最不重要的一点:AppSource 上提供了大量扩展,它们可以提供与另一个系统(例如 D365 Sales)的集成或允许您进行自定义数据导入(例如 EDI)。