图形 API 调用永久删除文件抛出 ODataError:“提供的参数之一不可接受。”

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

我需要使用 MS Graph API 从 Sharepoint Online 文档库中永久删除文件。这在 Graph API 浏览器中运行良好:

图表请求

在 C# 中,对于相同的请求,我收到此错误:

await graphClient.Drives["{Library_Drive_ID}"].Items["{Item_Drive_ID}"].PermanentDelete.PostAsync();

Microsoft.Graph.Models.ODataErrors.ODataError:提供的参数之一不可接受。

我正在使用具有应用程序权限

Sites.Fullcontrol
Sites.ReadWrite
的Azure AD应用程序。

需要纠正什么才能解决该问题?

c# azure post microsoft-graph-api sharepoint-online
1个回答
0
投票

使用客户端凭据流程永久删除文件时,请确保授予

Files.ReadWrite.All
类型的应用程序权限,如下所示:

enter image description here

我在

DemoSite
sridoclib 驱动器中有一个名为 Document.docx 的文件,如下所示:

enter image description here

要使用 MS Graph API 从 SharePoint Online 文档库永久删除上述文件,请使用以下示例 C# 代码:

using Azure.Identity;
using Microsoft.Graph;

class Program
{
    static async Task Main(string[] args)
    {
        var tenantId = "tenantId";
        var clientId = "appId";
        var clientSecret = "secret";

        var scopes = new[] { "https://graph.microsoft.com/.default" };

        var clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);

        var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

        var driveId = "driveId";
        var itemId = "itemId";

        try
        {
            await graphClient.Drives[driveId]
                             .Items[itemId]
                             .PermanentDelete
                             .PostAsync();

            Console.WriteLine("Item permanently deleted.");
        }
        catch (ServiceException ex)
        {
            Console.WriteLine($"Graph API Error: {ex.Message}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"{ex.GetType().FullName}: {ex.Message}");
        }
    }
}

回复:

enter image description here

为了确认,我在 SharePoint Portal 中检查了相同的内容,其中文件被永久删除,如下所示:

enter image description here

回收站:

enter image description here

参考:

永久删除文件或文件夹 - Microsoft Graph v1.0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.