首页 > 解决方案 > 使用 Graph API 和委派权限将成员添加到 Microsoft Teams

问题描述

我试图简单地将成员(已经在组织中)添加到特定的 Microsoft 团队。observerID 是我要添加的成员的 ID,而 teamID 是特定团队的 ID。我在启用 TeamMembers.ReadWrite.All 的情况下使用委派权限。我的代码如下所示:

            string json = $@"
            {{
              ""@odata.type"": ""#microsoft.graph.aadUserConversationMember"",
              ""roles"": [""member""],
              ""user@odata.bind"": ""https://graph.microsoft.com/beta/users({observerID})""
            }}";
            
            var body = new StringContent(json, Encoding.UTF8, "application/json");
            Console.WriteLine("Add observer");
            return await protectedApiCallHelper.CallWebApiAsync(WebApiUrlTeams + teamID + "/members", accessToken, body);
public async Task<JObject> CallWebApiAsync(string webApiUrl, string accessToken, HttpContent content)
        {
            if (!string.IsNullOrEmpty(accessToken))
            {
                var defaultRequestHeaders = HttpClient.DefaultRequestHeaders;
                if (defaultRequestHeaders.Accept == null || !defaultRequestHeaders.Accept.Any(m => m.MediaType == "application/json"))
                {
                    HttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                }
                defaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", accessToken);

                    HttpResponseMessage response = await HttpClient.PostAsync(webApiUrl, content);
                if (response.IsSuccessStatusCode)
                {
                    string json = await response.Content.ReadAsStringAsync();
                    JObject result = JsonConvert.DeserializeObject(json) as JObject;
                    return result;
                }
            }
            return null;
        }

我的问题是 http 调用失败,状态码为 400;'错误的请求'。我一次又一次地尝试找到我的电话的任何问题,但我似乎无法找到问题所在。当我 Console.WriteLine 用于正文的 json 时,它看起来像这样:

            {
              "odata.type": "#microsoft.graph.aadUserConversationMember",
              "roles": ["member"],
              "user@odata.bind": "https://graph.microsoft.com/beta/users(d52c2663-1c41-401b-8015-1216f0e68960)"
            }

网址看起来像:“https://graph.microsoft.com/beta/teams/a9f9ac33-fba5-4ce2-9515-8c498c70af85/members”,当我尝试通过 Postman 拨打电话时,它仍然返回错误代码 400。

有没有人对可能出现的问题有任何见解?

标签: c#microsoft-graph-apimicrosoft-graph-teams

解决方案


其实这个错误很简单。报告 400 通常是参数错误。您的 json 文件缺少特殊符号@". 我在本地对其进行了测试并为我工作。

在此处输入图像描述


推荐阅读