如何通过HTTP连接器结合Tenant ID、Client ID和Secret连接Logic App与D365
使用Logic App HTTP(s)连接器连接Microsoft Dynamics与Web API操作步骤
1. 先搞定权限(必做)
- 确认你的Azure AD应用(对应手里的Client ID)已经拿到Microsoft Dynamics 365 Web API的权限:
- 选委托权限的话,添加
Dynamics CRM > user_impersonation;选应用权限的话,添加Dynamics CRM > CRM.ReadWrite.All这类权限 - 重要:权限必须经过管理员同意,不然后续获取令牌会失败
- 选委托权限的话,添加
2. 获取Dynamics Web API的访问令牌
HTTP连接器需要Bearer令牌做认证,手动获取令牌的操作:
- 向Azure AD令牌端点发送POST请求,地址格式:
https://login.microsoftonline.com/{你的Tenant ID}/oauth2/v2.0/token - 请求格式用
x-www-form-urlencoded,参数填写:grant_type: 用client_credentials(对应应用权限)或者password(对应委托权限,需额外提供用户名和密码)client_id: 你的Client IDclient_secret: 你的Secretscope:https://{你的Dynamics实例域名}.crm.dynamics.com/.default(示例:https://contoso.crm.dynamics.com/.default)
- 请求返回的JSON里,
access_token就是所需令牌,保存好
3. 在Logic App中配置HTTP连接器
3.1 打开/新建Logic App
- 进入Azure门户,打开目标Logic App,或者新建一个空白的Consumption/Standard类型Logic App
3.2 添加HTTP组件
- 在设计器中点击添加触发器或添加动作,搜索并选择
HTTP连接器
3.3 填写请求参数
- 方法: 根据你要调用的Dynamics接口选择(比如查询数据用GET,新增数据用POST)
- URI: 填写Dynamics Web API的具体接口地址,示例:
https://{你的Dynamics实例域名}.crm.dynamics.com/api/data/v9.2/accounts(查询账户实体) - Headers: 必须添加以下头部:
Authorization:Bearer {刚才获取的access_token}OData-MaxVersion:4.0OData-Version:4.0- 如果是POST/PATCH请求,额外添加
Content-Type: application/json; charset=utf-8
3.4 自动获取令牌(推荐,无需手动更新)
不想每次手动获取令牌的话,在Logic App中添加自动取令牌的HTTP动作:
- 新增一个HTTP动作,方法设为POST,URI填写之前的Azure AD令牌端点
- Headers添加
Content-Type: application/x-www-form-urlencoded - Body用
x-www-form-urlencoded格式填写参数:grant_type:client_credentialsclient_id: 你的Client IDclient_secret: 你的Secretscope:https://{你的Dynamics实例域名}.crm.dynamics.com/.default
- 在调用Dynamics的HTTP请求中,将
Authorization头部的值改为Bearer @{body('HTTP_获取令牌')?['access_token']},实现每次运行自动获取最新令牌
4. 测试验证
- 保存Logic App,点击运行触发器(如果是手动触发类型)或触发对应事件,查看执行结果:
- 返回2xx状态码即为连接成功;
- 若返回4xx/5xx错误,优先检查权限是否已同意、令牌是否过期、URI格式是否正确,或请求参数是否有误
内容的提问来源于stack exchange,提问作者Deepak Shaw
相关产品推荐
相关产品推荐

