Microsoft graph api MS Graph API将共享文件夹的文件夹复制到同一父文件夹中赢得';t复制子文件夹和文件
上个月,我在angular web应用程序中设置了Microsoft服务集成,以访问公司的个人帐户。因此,我们使用Microsoft graph api MS Graph API将共享文件夹的文件夹复制到同一父文件夹中赢得';t复制子文件夹和文件,microsoft-graph-api,onedrive,Microsoft Graph Api,Onedrive,上个月,我在angular web应用程序中设置了Microsoft服务集成,以访问公司的个人帐户。因此,我们使用MSAL作为身份验证服务,使用MSAL_拦截器fromMSAL对我们的请求进行身份验证。所有员工都将公司的onedrive作为共享驱动器。一切正常,但本周我收到的反馈是,应该使用新名称复制的模型文件夹没有创建子文件夹和文件 让我显示将模型文件夹以其他名称复制到同一父文件夹中的工作流: 获取模型文件夹的元数据并保存父级信息: GEThttps://graph.microsoft.com
MSAL
作为身份验证服务,使用MSAL_拦截器fromMSAL
对我们的请求进行身份验证。所有员工都将公司的onedrive作为共享驱动器。一切正常,但本周我收到的反馈是,应该使用新名称复制的模型文件夹没有创建子文件夹和文件
让我显示将模型文件夹以其他名称复制到同一父文件夹中的工作流:
获取模型文件夹的元数据并保存父级信息:
GEThttps://graph.microsoft.com/v1.0/drives/SHARED_DRIVE_ID/items/SHARED_DRIVE_ID!52853:/05-DRM/01 Em%20和AMENTO/ORC-000\u ANO-NOME%20DO%20CONTATO-GESTROR
答复:
{
...
“id”:“共享驱动器id!110649”,
“lastModifiedDateTime”:“2021-05-21T15:28:55.567Z”,
“名称”:“ORC-000_ANO-NOME DO CONTRATO-GESTOR”,
“大小”:0,
“webUrl”:https://1drv.ms/f/s!ABM9Mjoi6dy8huA5“,
...
“家长参考”:{
“驱动器ID”:“共享驱动器ID”,
“驱动类型”:“个人”,
“id”:“共享驱动器id!95075”,
“名称”:“01 Em Andamento”,
“路径”:“/驱动器/共享驱动器ID/项目/共享驱动器ID!52853:/05-DRM/01 Em%20指令”
},
“文件系统信息”:{“createdDateTime”:“2021-02-11T13:47:04Z”,“lastModifiedDateTime”:“2021-03-29T13:50:23.99Z”},
“文件夹”:{
“儿童计数”:8,
“视图”:{“视图类型”:“缩略图”,“排序方式”:“takenOrCreatedDateTime”,“排序器”:“升序”}
},
“共享”:{“范围”:“用户”,“所有者”:{“用户”:{“显示名称”:“Nortan目录”,“id”:“共享驱动器”{id}}
}
使用“parentReference”发出复制请求
POSThttps://graph.microsoft.com/v1.0/drives/SHARED_DRIVE_ID/items/SHARED_DRIVE_ID!52853:/05-DRM/01 Em%20和AMENTO/ORC-000\u ANO-NOME%20DO%20CONTATO-GESTROR:/copy
有效载荷:
{
“parentReference”:{“driveId”:“SHARED_DRIVE_ID”,“ID”:“SHARED_DRIVE_ID!95075”},
“名称”:“ORC-189_2021-Posto de Combumível 3M Nichollas Gomes”
}
答复:
状态代码:202已接受
新复制的文件夹将与模型文件夹的所有子文件夹和文件一起创建
在复制请求被接受四秒钟后(因为无法通知复制过程),我获取新文件夹的信息以获取web URL
此工作流在我对员工个人onedrive文件夹的测试中起作用,它也在我们的共享文件夹中起作用。但是现在,在共享文件夹中,当我们到达工作流的第4步时,只创建了一个空的新文件夹
为了了解发生了什么,我还注意到,当它在onedrive网站上发出复制请求时,显示了一个复制操作,该操作稍后失败,并出现以下错误:错误:重试或刷新页面
,但我无法调试此错误。是否有方法调试此错误
编辑1:
我用Postman
在我的web应用程序外尝试了步骤2,但同样的问题发生了
编辑2:
与邮递员的请求和响应:
Staus:2020可接受时间:1596毫秒大小:719 B
{
“日期”:“2021年5月22日星期六16:46:16 GMT”,
“缓存控制”:“无存储”,
“传输编码”:“分块”,
“位置”:https://df.api.onedrive.com/v1.0/monitor/4s7kSj8n8-eF7gyNg40BOOKlQvmxjiQ9Yvana5Jl1l87mCOs4AGis4lO95DtmZaccjg-teKUNaY5EQtMya2RnjHfVY7DDbNXgCMYrQju89nzRdbwORmMhSxoy6mds4QfFOmAF92vSB7JL3J2456uxirjwjE3KCkN3KC9TfrJcxvGtFQU1VT7Euk6WMpoq3HeRcOwCtEP1GWuegI3qo1jFSj8PKoyIvTMrZ43snVoiBmjupBHiDlnTUsLkWzqUZ5v1X",
“严格的运输安全”:“最大年龄=31536000”,
“请求id”:“3a02e7bd-dbac-48e6-9a62-939ce0f2e3e0”,
“客户请求id”:“3a02e7bd-dbac-48e6-9a62-939ce0f2e3e0”,
“x-ms-ags-diagnostic”:{
“服务器信息”:{
“数据中心”:“巴西南部”,
“切片”:“E”,
“戒指”:“3”,
“ScaleUnit”:“000”,
“角色实例”:“CP1PEPF0001A64”
}
}
}
最后,我找到了问题所在。复制端点不处理将项用作基本路径的相对路径,如:
POSThttps://graph.microsoft.com/v1.0/drives/SHARED_DRIVE_ID/items/SHARED_DRIVE_ID!52853:/05-DRM/01 Em%20和AMENTO/ORC-000\u ANO-NOME%20DO%20CONTATO-GESTROR:/copy
因此,我只是在工作流中使用获取文件夹元数据以获取父信息时获得的项目ID更改了复制端点。现在我的复印请求是:
POSThttps://graph.microsoft.com/v1.0/drives/SHARED_DRIVE_ID/items/SHARED_DRIVE_ID!110649/份
此更改后,我的复制操作监视器结果为:
{
“错误代码”:“”,
“操作”:“itemCopy”,
“完成百分比”:100.0,
“资源ID”:“共享驱动器ID!290908”,
“状态”:“已完成”,
“状态描述”:“已完成的10/10文件;15906/15906字节”
}
相反
{
“错误代码”:“”,
“操作”:“itemCopy”,
“完成百分比”:0.0,
“状态”:“未启动”,
“状态描述”:“已完成的0/0文件;0/0字节”
}
感谢@Dev对您的支持。(1)您所说的公司个人onedrive是什么意思?如果我没记错的话,您说的是公司为每位员工提供的onedrive for business?(2) 共享响应中的Graph API错误,以及requestid、timestamp(来自postman或您的应用程序),我相信您知道,在大多数情况下,复制操作是异步执行的。来自API的响应将仅指示复制操作已被接受或拒绝,例如,由于目标文件名已在使用中。因此,值得检查的是,您没有出现上述情况。(1)不,我说的是个人OneDrive。公司有一个个人账户,因为每个员工都有一个。对我们来说,在南美洲是太远了