Brug OneDrive-API'en uden brugerinteraktion, f.eks. et batchprogram (.NET C#-version) (ved hjælp af Microsoft Graph-biblioteket)
Driftsmiljø
- Visual Studio
-
- Visual Studio 2022
- .NET
-
- .NET 8
- API til Microsoft-godkendelse
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.54.0
- Typer af Microsoft-konti
-
- Arbejds- eller skolekonto
Forudsætninger
- Visual Studio
-
- En af versionerne
- .NET
-
- En af versionerne
- API til Microsoft-godkendelse
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- Typer af Microsoft-konti
-
- Arbejds- eller skolekonto
Om dette tip
Dette tip er et modificeret program, der bruger biblioteket baseret på Microsoft Graph
følgende tip.
Se derfor følgende tipprocedure for at få en oversigt og betjeningsprocedure på Azure og se dette tip, når du bygger programmet.
forudsætning
- Du har en Microsoft-konto til en arbejds- eller skolekonto
- Du kan bruge det OneDrive, der er knyttet til den Microsoft-konto, der er angivet ovenfor (f.eks. OneDrive Business)
- Visual Studio 2022 installeret
- Du har registreret din app på Azure ved at henvise til ovenstående tip og fået de nødvendige oplysninger, f.eks. ID.
Opret et konsolprogram
Start Visual Studio, og opret et projekt til dit konsolprogram. Du kan oprette det uden for Visual Studio, men jeg vil bruge Visual Studio indtil videre.
Placeringen og projektnavnet er valgfrie. I dette tilfælde er OneDriveApiDotNetClientCredentialsMicrosoftGraph
projektnavnet .
Microsoft.Graph
Først skal du hente og Azure.Identity
biblioteker fra NuGet.
Denne gang vil vi ikke opdele koden, men Program.cs
vil skrive den forskudt fra toppen, så hvis du kan kontrollere bevægelsen, skal du omskrive den ved at opdele koden efter behov.
using Azure.Identity;
using Microsoft.Graph;
Beskriv det navneområde, du vil bruge.
// 各種 ID などの定義
var clientId = "XXXXXXXX"; // クライアント ID
var tenantId = "XXXXXXXX"; // テナント ID
var clientSecret = "XXXXXXXX"; // クライアント シークレット
var userId = "XXXXXXXX"; // ユーザー ID
Angiv det id, der er hentet på Azure for hver af dem.
// 使いまわすので最初に定義しておく
HttpClient httpClient = new();
Du har genereret en for at lave en anmodning til HttpClient
den angivne URL.
// クライアント シークレットによる認証情報を定義
ClientSecretCredential clientSecretCredential = new(tenantId, clientId, clientSecret);
// HttpClient と認証情報で Microsoft Graph サービスのクライアントを生成
using GraphServiceClient graphClient = new(httpClient, clientSecretCredential);
Definer klienthemmeligheden ved hjælp af det id, du har fået, og så videre.
Du kan bruge disse data til at HttpClient
GraphServiceClient
oprette en forekomst af .
Dette bruges ofte til at få adgang til forskellige API'er GraphServiceClient
.
// 対象ユーザーに紐づく OneDrive を取得 (紐づいているドライブが OneDrive 1つという前提)
var drive = await graphClient.Users[userId].Drive.GetAsync();
if (drive == null)
{
Console.WriteLine("ドライブを取得できませんでした。");
return;
}
GraphServiceClient
for at få OneDrive knyttet til brugeren først.
Hvis du har flere drev tilknyttet, skal Drives
du finde og hente destinations-OneDrive fra .
Det er muligt, at et andet drev end OneDrive også er linket, men jeg har ikke tjekket så meget.
Hvis du er sikker på, at der kun er knyttet ét OneDrive, kan du Drive
få det, som det er i egenskaberne.
// OneDrive のルートを取得
var root = await graphClient.Drives[drive.Id].Root.GetAsync();
if (root == null)
{
Console.WriteLine("OneDrive のルートを取得できませんでした。");
return;
}
Når du har OneDrive, kan du frit få adgang til det. Hvis du slår id'et op for en mappe eller fil, kan du angive det direkte. Først og fremmest har jeg ikke tjekket noget, så jeg får rodmappen.
// ルート直下にあるフォルダ一覧取得
var rootChildren = await graphClient.Drives[drive.Id].Items[root.Id].Children.GetAsync();
if (rootChildren == null || rootChildren.Value == null)
{
Console.WriteLine("フォルダの一覧を取得できませんでした。");
return;
}
foreach (var item in rootChildren.Value)
{
Console.WriteLine($"Type={(item.File != null ? "File" : "Folder")}, Id={item.Id}, Name={item.Name}, Size={item.Size}");
}
Når du har rodmappen, Children
kan du få en liste over filer og mapper direkte under den.
Derefter opregner jeg de hentede værdier og viser navnene.
Resumé
Jeg forsøgte at skrive kode ved hjælp af biblioteket "Microsoft Graph". Jeg tror, du kan reducere mængden af kode betydeligt sammenlignet med at få adgang til API'ens URL.
Jeg tror dog, at ulemperne er, at forskellige versioner af biblioteket kan forårsage ødelæggende ændringer i koden, og der er lidt dokumentation. Hvis du kan tolerere disse, tror jeg, det ville være mere fordelagtigt at reducere mængden af kode, du skriver.
Tak
Jeg havde nogle spørgsmål om brugen af OneDrive API denne gang, så jeg stillede et spørgsmål.