如何使用Graph API在MS Team中添加团队成员?

时间:2018-05-13 15:51:23

标签: office365 microsoft-graph microsoft-teams

我正在使用Microsoft Graph API创建团队并在MS团队中添加团队成员。我正在关注此documentation

这是我为实现整体行为而做的事情:

  1. 创建Office 365组。这里没有问题。
  2. 在步骤1中创建的组下创建一个MS Team。这也可以。
  3. 将成员添加到在步骤1中创建的office 365组。运行良好。
  4. 在步骤2中创建的MS Team中添加与团队成员相同的成员。不能正常工作。
  5. 我使用以下代码添加团队成员:

    public static void AddMemberToTeam(string userId, string groupId) 
    {
                var endpoint = $"{GRAPH_ROOT_URI}groups/{groupId}/members/$ref";
            var content = new Member { ODataId = $"{GRAPH_ROOT_URI}directoryObjects/{userId}" };
                var request = new HttpRequestMessage(HttpMethod.Post, endpoint);
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", TOKEN);
                request.Content = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8, "application/json");
                var client = new HttpClient();
                var response = client.SendAsync(request).Result;
    }
    

    虽然从上一个语句返回的响应是根据文档(204 No Content),但成员不会被添加到团队中。我没有在Teams图谱API的社区中找到很多帮助。

    Documentation添加团队成员:

    PS:我正在使用Office 365开发者帐户,并且我已向管理员用户提供了所有必需的权限。

1 个答案:

答案 0 :(得分:1)

您收到 Not Found 错误,因为在Json Payload中您传递的是ODataId,API调用期望它为@ odata.id。

以下是两种可能的解决方案:

  1. 将内容更新为以下内容:

    var contentJSON = $"{{ \"@odata.id\": \"https://graph.microsoft.com/beta/directoryObjects/{userId}\" }}";
    request.Content = new StringContent(contentJSON, Encoding.UTF8, "application/json");
    
  2. 您可以将您的类集@ odata.id更新为Json Property name:

        class Member
    {
        [JsonProperty("@odata.id")]
        public string ODataId { get; set; }
    }