Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microsoft graph api 从团队获取驱动器ID返回错误_Microsoft Graph Api_Microsoft Teams_Microsoft Graph Sdks_Microsoft Graph Teams - Fatal编程技术网

Microsoft graph api 从团队获取驱动器ID返回错误

Microsoft graph api 从团队获取驱动器ID返回错误,microsoft-graph-api,microsoft-teams,microsoft-graph-sdks,microsoft-graph-teams,Microsoft Graph Api,Microsoft Teams,Microsoft Graph Sdks,Microsoft Graph Teams,在发出GET请求时,我在获取驱动器ID时遇到问题 首先,我使用“创建团队”https://graph.microsoft.com/v1.0/teams". 请求未返回响应,但状态为202已接受,新团队将列在团队中。然后,我从响应标题“Location”中提取团队ID 这里是失败,我提出一个请求 这是我的回复 {"error":{"code":"ResourceNotFound","message":"Res

在发出GET请求时,我在获取驱动器ID时遇到问题

首先,我使用“创建团队”https://graph.microsoft.com/v1.0/teams". 请求未返回响应,但状态为202已接受,新团队将列在团队中。然后,我从响应标题“Location”中提取团队ID

这里是失败,我提出一个请求

这是我的回复

{"error":{"code":"ResourceNotFound","message":"Resource is not found.","innerError":{"date":"2021-05-03T19:17:03","request-id":"75b4888d-de91-41aa-89ef-d983fcb5238d","client-request-id":"75b4888d-de91-41aa-89ef-d983fcb5238d"}}}
我在via postman上也提出了同样的要求,效果很好

这是我的密码

try {
        let crt = await createTeam(msalData, data);
        crt.headers.forEach( async (val, key) => {
            if (key === "location") {
                let id = val.split("/teams('")[1].split("')/operations")[0];
                let gdd = await getDocumentDrive(msalData, id);
                console.log(gdd)
            }
        });
            
    } catch (err) {
        console.log(err);
    }
我不知道我做错了什么。

显然,错误(
ResourceNotFound
)发生在提交组时,但尚未完全配置组,这方面:

如果该组是在15分钟前创建的,那么 由于复制,Create team调用失败,错误代码为404 耽搁。建议的模式是重试CreateTeamCallThree 次,两次通话之间有10秒的延迟

由于您尚未透露
createTeam
函数是如何实现的,因此请在此进行说明,例如:

async function withRetry(fn, maxRetry = 5, ms = 1000) {
  try {
    const val = await fn();
    return val;
  } catch (error) {
    if (maxRetry) {
      await new Promise((r) => setTimeout(r, ms));
      return withRetry(fn, maxRetry - 1, ms);
    } else throw new Error(`Max retries reached for function ${fn.name}`);
  }
}
现在可以像这样创建团队(注意,在重试逻辑中,提交请求以确保它已被配置):

其中,
createTeam
可以如下所示:

async function createTeam(client, teamName, defaultOwnerId) {
  const team = {
    "template@odata.bind":
      "https://graph.microsoft.com/v1.0/teamsTemplates('standard')",
    displayName: teamName,
    description: teamName,
    members: [
      {
        "@odata.type": "#microsoft.graph.aadUserConversationMember",
        roles: ["owner"],
        "user@odata.bind": `https://graph.microsoft.com/v1.0/users('${defaultOwnerId}')`,
      },
    ],
  };

  return await client.api("/teams").responseType(ResponseType.RAW).post(team);
}
用法

const graphClient = Client.initWithMiddleware({ authProvider });
const group = await ensureTeam(graphClient,"Demo team",ownerId);
const driveUrl = `/groups/${group.id}/drive`;
const drive = await graphClient.api(driveUrl).get();

我不会在同一个电话里打所有的电话——因为当你尝试创建团队时,位置或所有属性都不会被设置,所以我会用不同的方式(就像邮递员的工作原理一样)来看看它是否有帮助。。(1) 以编程方式创建团队(2)确保其已创建(3)然后我将继续,打电话获取位置信息以查看位置是否可用。@Dev我刚刚注意到,创建团队需要30秒到一分钟的时间,以便可以积极使用ID。我使用的一种解决方法是创建团队,然后继续调用获取驱动器api“{TeamsID}}}/drive”,直到返回成功的响应。这在api更新之前一直有效。正是我上面所说的。。。不要立即尝试资源,也不要在同一个调用中尝试,请稍后再试。很高兴听到它成功了:)
const graphClient = Client.initWithMiddleware({ authProvider });
const group = await ensureTeam(graphClient,"Demo team",ownerId);
const driveUrl = `/groups/${group.id}/drive`;
const drive = await graphClient.api(driveUrl).get();