【问题标题】:GraphAPI Creating a new MSTeam right after creating a new group fails with 404Graph API 在创建新组后立即创建新的 MS Teams 失败并出现 404
【发布时间】:2020-04-23 12:32:11
【问题描述】:

我想从一个新创建的组中组建一个新的 MSTeam。

  • 我创建了一个新的 GraphServiceClient
  • 我创建了一个新的 AuthProvider
  • 我用这样的客户创建了一个新组:

    graphApplicationClient.groups().buildRequest().post(group);

它工作到这里。我得到一个 Group 对象作为响应,并且可以使用它。它有一个 Id 等等

之后我想从这个组中创建一个新团队,所以我打电话

ITeamRequest iTeamRequest = graphApplicationClient.groups(pGroupId).team().buildRequest();
iTeamRequest.setMaxRetries(3);
iTeamRequest.setDelay(10);
Team newTeam = iTeamRequest.post(team);

其中 pGroupId 是我之前从通话中获得的 ID。 (在这种情况下:“团队”是在此调用之前创建的新团队对象,就像在 MS-Docs 中一样。)

我知道 MS-Docs 中的那句话:

如果群组是在不到 15 分钟前创建的,则可能 由于复制,创建团队调用失败并出现 404 错误代码 延误。推荐的模式是重试创建团队调用三 次,通话之间有 10 秒的延迟。

这就是为什么我添加了 maxRetries 和 Delay.. 我看了这个视频:

https://youtu.be/ybGm1qWVi-k?t=650

其中两名 MS 员工的行为与我完全相同... 我错过了什么?或者有解决方法吗?

这是回复:

404 : Not Found
Strict-Transport-Security : max-age=31536000
Cache-Control : private
x-ms-ags-diagnostic : {"ServerInfo":{"DataCenter":"West Europe","Slice":"SliceC","Ring":"5","ScaleUnit":"002","RoleInstance":"AGSFE_IN_51"}}
client-request-id : b39c16e4-f786-4d42-865e-9f0cf23ed46f
request-id : 07efc77c-02d3-45f7-85ab-6ca2241d1859
Content-Length : 198
Date : Thu, 23 Apr 2020 12:39:30 GMT
Content-Type : application/json
{
  "error": {
    "code": "UnknownError",
    "message": "",
    "innerError": {
      "request-id": "07efc77c-02d3-45f7-85ab-6ca2241d1859",
      "date": "2020-04-23T12:39:30"
    }
  }
}

如果我在其中添加更多重试次数(10 = Max)和更多延迟(180 = Max),它也不起作用...... 而且java中没有PUT..

最好的问候

EDIT1:我尝试使用其他两个选项来完成它。第一个使用 ScribeJava,第二个使用普通的 httpRequest.. 它们都不起作用。我只用graphExplorer完成它。使用其他选项它说BadRequest,但是当我将代码中的所有内容复制到GraphExplorer时它可以工作......帮助我:(

EDIT2:我有一个小组已经存在了一天。由此我想创建一个新团队。仍然 404 未找到。我用 GraphAPI 和 ScribeJava 尝试过。这些调用都不起作用。调试通过,复制所有信息,放入Postman,工作正常。

【问题讨论】:

  • 您能否确认您是否添加了具有所需权限的访问令牌。这是create team using Graph API的示例代码。
  • 是的,我很确定我拥有正确的访问令牌,因为在我创建具有相同访问令牌的新 Azure 组之前,它工作正常。我得到了 Group-Object 并可以访问 group.id 方法,该方法为我提供了新 Group 的 Id。我调试并复制了访问令牌并进行了 Postman 调用 -> 工作正常。但不是用代码..(在 Postman 中我必须使用 PUT..但在 graph-sdk 中的 Java 中没有 PUT...)
  • java SDK中有一个PUT。你能试试样品吗here
  • 我在我的问题中添加了一张图片。请看一下。

标签: java microsoft-graph-api microsoft-teams


【解决方案1】:

对于和我有同样问题的每个人。GraphAPI 提供了一个 customRequest() 函数。 我使用相同的令牌、相同的 url、相同的属性,但使用带有 PUT 的 customRequest。工作...

CustomRequest<JsonObject> createTeamCustomRequest = graphApplicationClient.customRequest("/groups/" + pGroupId + "/team").buildRequest();
createTeamCustomRequest.setMaxRetries(3);
createTeamCustomRequest.setDelay(10);
JsonObject newTeam = _createTeamInJson();
JsonObject createdTeam = createTeamCustomRequest.put(newTeam);

这是 _createTeamInJson 函数。返回与我使用 GraphAPI 创建团队时相同的正文

private JsonObject _createTeamInJson()
  {
    JsonObject teamPayload = new JsonObject();
    JsonObject memberSettings = new JsonObject();
    JsonObject messagingSettings = new JsonObject();
    JsonObject funSettings = new JsonObject();
    memberSettings.addProperty("allowCreateUpdateChannels", true);
    messagingSettings.addProperty("allowUserEditMessages", true);
    messagingSettings.addProperty("allowUserDeleteMessages", true);
    funSettings.addProperty("allowGiphy", true);
    funSettings.addProperty("giphyContentRating", "strict");

    teamPayload.add("memberSettings", memberSettings);
    teamPayload.add("messagingSettings", messagingSettings);
    teamPayload.add("funSettings", funSettings);
    return teamPayload;
  }

这不是正确的解决方案,因为它应该与普通的 GraphAPI 一起使用,这就是为什么我不将此标记为答案的原因。但这对于遇到相同问题的每个人来说都是一种解决方法..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多