我正在使用Microsoft Graph API创建团队并在MS团队中添加团队成员。我正在关注此documentation:
这是我为实现整体行为而做的事情:
我使用以下代码添加团队成员:
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开发者帐户,并且我已向管理员用户提供了所有必需的权限。
答案 0 :(得分:1)
您收到 Not Found 错误,因为在Json Payload中您传递的是ODataId,API调用期望它为@ odata.id。
以下是两种可能的解决方案:
将内容更新为以下内容:
var contentJSON = $"{{ \"@odata.id\": \"https://graph.microsoft.com/beta/directoryObjects/{userId}\" }}";
request.Content = new StringContent(contentJSON, Encoding.UTF8, "application/json");
您可以将您的类集@ odata.id更新为Json Property name:
class Member
{
[JsonProperty("@odata.id")]
public string ODataId { get; set; }
}