我需要使用 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应用程序。
需要纠正什么才能解决该问题?
使用客户端凭据流程永久删除文件时,请确保授予
Files.ReadWrite.All
类型的应用程序权限,如下所示:
我在
DemoSite的 sridoclib 驱动器中有一个名为
Document.docx
的文件,如下所示:
要使用 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}");
}
}
}
回复:
为了确认,我在 SharePoint Portal 中检查了相同的内容,其中文件被永久删除,如下所示:
回收站:
参考: