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

创建MS Graph订阅跟踪Teams应用聊天消息时遇权限错误

问题:创建MS Graph订阅跟踪Teams应用安装的聊天消息时遇403错误

我想要创建MS Graph订阅,跟踪安装了指定Teams应用的聊天中的消息。

使用的请求命令

curl --location 'https://graph.microsoft.com/v1.0/subscriptions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <token>' \
--data '{
  "changeType": "created,updated",
  "notificationUrl": "<url>",
  "lifecycleNotificationUrl": "<url>",
  "resource": "/appCatalogs/teamsApps/<yyy>/installedToChats/getAllMessages",
  "includeResourceData": true,
  "encryptionCertificate": "<certificate>",
  "encryptionCertificateId": "<certificate_id>",
  "expirationDateTime": "2025-07-10T23:59:59.0000000Z",
  "clientState": "<secret>"
}'

已配置的权限

我的Azure应用已获得管理员授权,拥有以下权限:

  • AppCatalog.Read.All
  • Chat.Read.WhereInstalled
  • ChatMessage.Read.All
  • TeamsAppInstallation.Read.All

收到的403错误响应

{
    "error": {
        "code": "ExtensionError",
        "message": "操作:创建;异常:[状态码:禁止;原因:AAD应用ID 'xxx' 不允许管理Teams应用 'yyy'。]",
        "innerError": {
            "date": "2025-07-09T14:50:24",
            "request-id": "...",
            "client-request-id": "..."
        }
    }
}

其中xxx是我的Azure应用ID,yyy是Teams应用ID。

背景情况

我曾在自定义Teams应用上成功实现该订阅,但必须修改应用的manifest,添加webApplicationInfo并设置我的Azure应用ID。

现在的需求是:跟踪第三方Teams应用(例如ID为d3d1be68-066c-4967-a74b-9edcf902dcfb的“Decisions”应用)的消息,或者在无法修改自定义Teams应用manifest的情况下实现订阅,该如何处理?

更新的错误信息

{
    "error": {
        "code": "ExtensionError",
        "message": "操作:创建;异常:[状态码:禁止;原因:AAD应用ID '861d...' 不允许管理Teams应用 'd3d1be68-066c-4967-a74b-9edcf902dcfb'。]",
        "innerError": {
            "date": "2025-07-11T07:22:29",
            "request-id": "03a2a2ee-1ecc-4ec1-883c-b2a885665907",
            "client-request-id": "03a2a2ee-1ecc-4ec1-883c-b2a885665907"
        }
    }
}

解决方案

  1. 核心原因:MS Graph的目标应用定向订阅接口要求Azure应用与Teams应用存在绑定关系——要么是自定义应用manifest中配置了对应Azure应用ID,要么你是目标应用的开发者/拥有者,第三方应用显然无法满足后一条件。

  2. 替代方案:全局订阅+后置过滤

    • 将订阅资源路径改为/chats/getAllMessages,订阅全局聊天消息的创建、更新事件。
    • 收到通知后,调用GET /chats/{chatId}/installedApps接口,检查该聊天是否安装了目标Teams应用,仅处理符合条件的消息。
    • 此方案依赖你已有的Chat.Read.All和TeamsAppInstallation.Read.All权限,需注意租户内聊天数量可能带来的通知量压力,建议配合高效的过滤逻辑。
  3. 租户管理员级尝试

    • 若你是租户管理员,可通过Graph PowerShell或Azure AD权限管理,尝试为Azure应用添加对目标Teams应用的管理权限,但第三方应用可能受厂商限制无法配置,仅对租户内自定义部署的应用可能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:24:50