【问题标题】:Microsoft Graph Post action to Create group "Bad request"Microsoft Graph 发布操作以创建组“错误请求”
【发布时间】:2018-08-30 09:12:37
【问题描述】:

我们正在尝试向 Microsoft Graph API 发布请求以创建组,如 HERE 解释的那样

基本网址是: https://graph.microsoft.com/v1.0/groups 内容类型设置为应用程序/json 我们也有一个有效的 Baerer 令牌。

我们使用 Microsoft.Graph 命名空间(NuGet 包)中的 Group 类,因此我们使用数据填充属性并调用 JsonConvert.SerializeObject(group) 将组对象序列化为 Json。

这就是我们构建和序列化的方式:

 Microsoft.Graph.Group group = new Microsoft.Graph.Group();
                group.Description = "Self help community for library";
                group.DisplayName = "Library Assist";
                group.GroupTypes = new[] { "Unified" };
                group.MailEnabled = true;
                group.MailNickname = "library";
                group.SecurityEnabled = true;

   string json = JsonConvert.SerializeObject(group);

   var content = new StringContent(json);
   var response = httpclient.PostAsJsonAsync(Uri, content).Result;

HttpClient 的 headers 设置如下:

 httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "...value of baerer token...");
 httpclient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

我们正在从https://graph.microsoft.com/v1.0 开始构建 URL 添加/groups

在回复中,我们收到了Bad request status code 400。 这意味着请求 URI、标头或正文中存在错误,但在 Graph Explorer 中,与上面相同的代码工作正常,我们在响应中得到结果。 我在监督什么?

感谢您的任何反馈或建议。 亲切的问候。

【问题讨论】:

  • 能否提供更完整的代码示例?这意味着您正在序列化一个字符串 (postBody),但我认为情况并非如此。
  • 嘿@MarcLaFleur,感谢您的关注。我已经更新了原来的帖子。如果我能澄清任何事情,请告诉我。亲切的问候

标签: c# microsoft-graph-api


【解决方案1】:

由于您已经使用Microsoft.Graph 命名空间,您可以使用内置的GraphServiceClient 来发出请求,如下所示。您不需要使用 http 客户端或序列化对象,这将被处理:

var graphserviceClient = new GraphServiceClient(
    new DelegateAuthenticationProvider(
        (requestMessage) =>
        {
            requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", "<your-access-token>");              
        }));

var group = new Microsoft.Graph.Group
{
    DisplayName = "Library Assist",
    Description = "Self help community for library",
    MailNickname = "library",
    MailEnabled = true,
    SecurityEnabled = true,
    GroupTypes = new List<string> { "Unified" }
};      

var createdGroup = await graphserviceClient.Groups.Request().AddAsync(group);

参考 - Intro to the Microsoft Graph .NET Client Library

【讨论】:

  • 你拯救了我们的一天!这就像预期的那样工作!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多