azure Microsoft Graph API -如何删除包含子项的文件夹

cu6pst1q  于 2023-08-07  发布在  其他
关注(0)|答案(2)|浏览(99)

我可以使用Microsoft Graph API删除文件夹。下面的API调用起作用,但仅当文件夹为空且没有子文件夹时。

DELETE https://graph.microsoft.com/v1.0/drives/{{driveId}}/items/{{driveItemId}}

字符串
1.使用相同的客户端应用程序和权限创建和删除文件夹
1.它是Sharepoint文档库中的一个文件夹,如果这很重要的话
1.我尝试添加一个If-Match头文件夹的当前eTag,但没有任何区别。
这是我得到的回应:

409 Conflict
{
    "error": {
        "code": "resourceModified",
        "message": "The resource has changed since the caller last read it; usually an eTag mismatch",
        "innerError": {
            "date": "2022-10-17T21:40:30",
            "request-id": "b3d35695-...",
            "client-request-id": "b3d35695-..."
        }
    }
}


有没有办法强制删除,或者我必须先清除它才能删除它?如果我必须把它清除掉,最简单的方法是什么?

mbzjlibv

mbzjlibv1#

  • 我试图在我的环境中重现相同的结果,并得到了以下结果:*

我有一个Azure AD应用程序,并授予**API permissions**如下所示:


的数据
为了调用Microsoft Graph,我通过Postman通过客户端凭证流获取了access token,如下所示:



我在我的SharePoint文档库中使用上面的标记和下面的查询创建了文件夹:

POST https://graph.microsoft.com/v1.0/drives/<driveID>/items/
{
"name": "Sri Folder",
"folder": { },
}

字符串

回复:



当我签入SharePoint Online时,在文档库中成功创建文件夹,如下所示:



现在,我通过上传一个文件到创建的**folder中添加了children**:

PUT https://graph.microsoft.com/v1.0/drives/<driveID>/items/<driveItemId>:/test.txt:/content

回复:



当我在SharePoint Online中勾选相同时,文件成功上传到文件夹,如下所示:



现在,我用和你一样的查询删除了有子项的文件夹,添加**If-matchheader,得到相同**错误,如下:

DELETE https://graph.microsoft.com/v1.0/drives/<driveId>/items/<driveItemId>
If-match : etag_value

回复


    • 解决错误,需要将If-matchheader替换为eTag**。

我尝试了相同的查询,将**If-matchheader替换为eTag,返回Status:204没有内容**如下所示:

回复:



当我在SharePoint Online刷新页面时,发现这个错误文件夹被删除沿着其子文件夹:



打开 * 文档库 *,找不到文件夹,删除成功:


k5hmc34c

k5hmc34c2#

第一个获取令牌:

TOKEN=$(curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \
        -d "client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}&grant_type=client_credentials&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default" \
        https://login.microsoftonline.com/${TENANT_ID}/oauth2/v2.0/token | \
        python3 -c "import sys, json; print(json.load(sys.stdin)['access_token'])")

字符串

第二次获取驱动id:

curl -X GET -H "Authorization: Bearer ${TOKEN}" \
  https://graph.microsoft.com/v1.0/sites/${TENANT_NAME}.sharepoint.com:/sites/${SITE_NAME}

curl -X GET -H "Authorization: Bearer ${TOKEN}" \
  https://graph.microsoft.com/v1.0/sites/${SITE_ID}/drive

第三次删除路径:

curl -X DELETE -H "Authorization: Bearer ${TOKEN}" \       
  https://graph.microsoft.com/v1.0/drives/${DRIVE_ID}/root:/Borrar/BOLIVIA/MAS.jpg

相关问题