图表REST AddMember到组 - 错误请求

时间:2017-10-04 19:53:55

标签: microsoft-graph

我正在尝试将成员添加到群组中。我可以在我的组织中列出所有组,通过电子邮件获取用户,获取所有用户以及我甚至可以从组中删除成员但我无法添加一个 - 返回的错误是{{1} }。

这是与函数签名相同的函数:(我确实有400 Bad Request,有效的组ID和有效的成员ID)

我已经确认身体数据看起来正确,至少从我example in the docs可以看到。

不确定我还能添加什么来让事情变得更清楚,请问并且我会更新

accesstoken

感谢任何人提供的任何帮助 - 这是我必须要做的最后一次免费电话

2 个答案:

答案 0 :(得分:2)

为任何关心未来的人找到了问题:

var body = new FormUrl...我的代码不正确,需要的是一个简单的json字符串更改为 UPDATED

var jsonData = $@"{{ ""{keyOdataId}"": ""{valueODataId}"" }}"; var body = new StringContent(jsonData, Encoding.UTF8, "application/json");

我通常会将这些值放在一个类中,但这是为了证明概念,json键需要看起来像这样@odata.id

答案 1 :(得分:2)

澄清这里发生的事情:

此调用的请求正文应为JSON编码(application/json)。 FormUrlEncodedContent方法将字典作为表单编码(application/x-www-form-urlencoded)返回。

你可以手工编写JSON(就像你到目前为止),但更好的解决方案是利用Json.NET。这将使您encode the dictionary的方式与FormUrlEncodedContent的方式非常相似:

var values = new Dictionary<string, string>
    {
       { keyOdataId, valueODataId}
    };
var body = JsonConvert.SerializeObject(values);

如果您要使用Microsoft Graph进行大量工作,我强烈建议您切换到Microsoft Graph .NET SDK

使用SDK,这里的方法会更简单:

public async Task<string> AddGroupMember(string groupId, string memberId)
{
    GraphServiceClient graphClient = AuthenticationHelper.GetAuthenticatedClient();
    User userToAdd = new User { Id = memberId };
    await graphClient.Groups[groupId].Members.References.Request().AddAsync(userToAdd);
}