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

通过Graph API(C#)创建Teams一对一聊天的应用注册疑问

问题解答

不是必须使用组织邮箱在Azure AD中注册应用,但你的当前配置和代码存在几个关键问题,导致创建聊天时出现异常:

1. 应用权限的场景限制

你使用的应用权限模式下,Chat.Create权限仅允许创建包含应用本身的聊天,无法直接创建两个组织用户之间的一对一聊天。应用权限是让应用以自身身份操作,而非模拟组织用户发起聊天——这和你要实现的“从指定组织邮箱向收件人发消息”的需求不匹配。

2. 跨租户访问的问题

你用个人邮箱注册的应用属于个人Azure AD租户,而目标用户属于你的组织租户。个人租户的应用要访问组织租户的用户数据,需要组织租户管理员配置跨租户访问策略,并同意该应用的权限请求,否则会因权限不足或租户隔离导致请求失败。

3. 代码的异步调用错误

你的代码中调用AddAsync时没有使用await,且方法定义为async void,这会导致异步操作未完成就结束,直接引发异常。正确写法应将方法改为async Task并等待操作完成:

private static async Task CreateChat(string token)
{
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
    GraphServiceClient graphClient = new GraphServiceClient(httpClient);

    var chat = new Chat
    {
        ChatType = ChatType.OneOnOne,
        Members = new ChatMembersCollectionPage()
        {
            new AadUserConversationMember
            {
                Roles = new List<String>()
                {
                    "owner"
                },
                AdditionalData = new Dictionary<string, object>()
                {
                    {"user@odata.bind", "https://graph.microsoft.com/v1.0/users('$my_org_name@myorg.com')"}
                }
            },
            new AadUserConversationMember
            {
                Roles = new List<String>()
                {
                    "owner"
                },
                AdditionalData = new Dictionary<string, object>()
                {
                    {"user@odata.bind", "https://graph.microsoft.com/v1.0/users('$receiver_org_name@myorg.com')"}
                }
            }
        }
    };

    var chatResult = await graphClient.Chats
        .Request()
        .AddAsync(chat);
}

正确的测试方案

方案一:改用委派权限(推荐,匹配官方示例场景)

官方文档的“示例3:使用用户主体名称创建一对一聊天”基于委派权限,你需要:

  • 在Azure AD应用中添加Chat.Create委派权限
  • 使用组织用户的身份进行认证(比如设备码流、用户名密码流),模拟该用户创建一对一聊天,完全匹配你的需求。

方案二:调整应用权限的使用逻辑(不推荐,不符合需求)

如果坚持用应用权限,只能创建包含应用的聊天,无法实现纯用户间的一对一对话,逻辑上不符合你的业务场景。

应用注册的优化

你可以继续使用个人邮箱注册应用,但需要将应用关联到组织租户(或直接在组织租户中注册应用),确保组织租户管理员同意应用的权限请求,避免跨租户访问的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:03:49