You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Graph API以应用身份向Microsoft Teams频道发消息?

解决以Application身份向Teams频道发消息的问题

核心问题分析

你要实现的是**应用身份(而非用户身份)**发送Teams频道消息,首先要明确不同OAuth流程的适用场景:

  • 授权码流程(方案1)本质是代用户操作,token绑定用户身份,所以发消息会显示授权用户,这是该流程的预期行为,不符合你的需求。

方案2的错误修复(client_credentials流程)

你遇到的AADSTS1002012错误,源于client_credentials授权类型的scope使用错误,正确配置步骤如下:

  1. 在Azure AD应用的应用权限中添加Teams相关应用权限(比如ChannelMessage.Send、Channel.ReadBasic.All),必须选择「应用权限」而非「委派权限」。
  2. 完成管理员同意(应用权限需要全局管理员或Teams管理员审批,这是必要步骤)。
  3. 获取token时,scope必须指定为https://graph.microsoft.com/.default,示例请求:
    POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
    Content-Type: application/x-www-form-urlencoded
    
    client_id={client-id}&client_secret={client-secret}&grant_type=client_credentials&scope=https://graph.microsoft.com/.default
    
  4. 用获取到的token调用Graph API发送消息,此时消息会以应用身份发出。

Incoming Webhooks的程序化创建

Incoming Webhooks确实可以实现应用发消息,且支持程序化创建,步骤如下:

  1. 确保Azure AD应用拥有TeamworkWebhook.ReadWrite.All应用权限并完成管理员同意。
  2. 调用Graph API的创建端点:
    POST https://graph.microsoft.com/v1.0/teams/{team-id}/channels/{channel-id}/webhooks
    Content-Type: application/json
    Authorization: Bearer {access-token}
    
    {
      "displayName": "自定义Webhook名称",
      "configuration": {
        "url": "" // 留空,API会自动生成专属webhook URL
      }
    }
    
  3. 响应结果中会返回生成的webhook URL,后续即可用该URL直接发送消息。

内容的提问来源于stack exchange,提问作者Shai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 21:12:10