Office365 如何使用Graph API在MS团队中添加团队成员?
我正在使用Microsoft Graph API创建团队,并在MS团队中添加团队成员。出于同样的原因,我遵循这一点: 这就是我为实现整体行为所做的: 创建office 365组。这里没有问题。 在步骤1中创建的组下创建MS团队。这也很好。 将成员添加到在步骤1中创建的office 365组。效果很好。 在步骤2中创建的MS团队中添加与团队成员相同的成员。不起作用。 我正在使用以下代码添加团队成员:Office365 如何使用Graph API在MS团队中添加团队成员?,office365,microsoft-graph-api,microsoft-teams,Office365,Microsoft Graph Api,Microsoft Teams,我正在使用Microsoft Graph API创建团队,并在MS团队中添加团队成员。出于同样的原因,我遵循这一点: 这就是我为实现整体行为所做的: 创建office 365组。这里没有问题。 在步骤1中创建的组下创建MS团队。这也很好。 将成员添加到在步骤1中创建的office 365组。效果很好。 在步骤2中创建的MS团队中添加与团队成员相同的成员。不起作用。 我正在使用以下代码添加团队成员: public static void AddMemberToTeam(string userId,
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一致,但没有任何内容,成员不会被添加到团队中。我在社区中找不到关于Ms Team graph API的太多帮助
要添加团队成员,请执行以下操作:
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;
}
PS:我正在使用office 365开发人员帐户,并且我已将所有需要的权限授予管理员用户。您将遇到找不到错误,因为在Json负载中,您正在传递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属性名:
class Member
{
[JsonProperty("@odata.id")]
public string ODataId { get; set; }
}
谢谢你的回答,但我使用的类定义与你在选项2中提到的完全相同。但是,在从开发人员帐户切换到许可的office 365帐户后,该问题似乎得到了解决。