GraphAPI在创建新组后立即创建新的MSTeam,结果404失败。

问题描述 投票:0回答:1

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

  • 我创建了一个新的GraphServiceClient
  • 我创建了一个新的AuthProvider
  • 我在客户端创建了一个新的Group,像这样。

    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。(在这种情况下。"team "是一个新的Team-Object,就在这个调用之前创建的,就像在MS -Docs中一样。)

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

如果该组创建时间少于15分钟,那么由于复制延迟,Create team调用有可能以404错误代码失败。推荐的模式是重试三次Create team调用,每次调用之间有10秒的延迟。

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

https:/youtu.beybGm1qWVi -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=最大值)和更多的延迟(180=最大值)放在里面,它也不工作...而且在java中没有PUT...。

There is no PUT in Java

最好的问候

EDIT1: 我试着用另外两个选项来完成它,第一个是用ScribeJava,第二个是用普通的httpRequest,它们都没有用。我只用graphExplorer来完成。使用其他选项时,它说BadRequest,但当我把我在代码中得到的所有东西复制到GraphExplorer中时,它就工作了......帮助我 :(

EDIT2:我有一个组,已经存在一天了。由此我想创建一个新的团队。还是404 Not Found。我用 GraphAPI 和 ScribeJava 试了一下。这些调用都没有工作。调试了一下,复制了所有的信息,把它放在Postman中,工作正常。

java microsoft-graph microsoft-teams
1个回答
1
投票

GraphAPI提供了一个customRequest()函数,我使用相同的token,相同的url,相同的属性,但使用customRequest与PUT。工作...

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一起工作,这就是为什么我不把它标记为答案。但对于有同样问题的人来说,这是一个变通的方法。

© www.soinside.com 2019 - 2024. All rights reserved.