Gebruik de OneDrive-API zonder tussenkomst van de gebruiker, zoals een batchprogramma (.NET C#-versie) (met behulp van de Microsoft Graph-bibliotheek)
Werkomgeving
- Visuele Studio
-
- Visuele Studio 2022
- .NET
-
- .NET 8
- API voor Microsoft-verificatie
-
- 2.0 OAuth 2
- Microsoft OneDrive-API
-
- 1.0
- Microsoft.Graph
-
- 5.54.0
- Typen Microsoft-accounts
-
- Werk- of schoolaccount
Voorwaarden
- Visuele Studio
-
- Een van de versies
- .NET
-
- Een van de versies
- API voor Microsoft-verificatie
-
- 2.0 OAuth 2
- Microsoft OneDrive-API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- Typen Microsoft-accounts
-
- Werk- of schoolaccount
Over deze tip
Deze tip is een aangepast programma met behulp van de bibliotheek op basis van Microsoft Graph
de volgende tips.
Raadpleeg daarom de volgende tipsprocedure voor een overzicht en bedieningsprocedure op Azure en raadpleeg deze tip wanneer u het programma bouwt.
voorwaarde
- U hebt een Microsoft-account voor een werk- of schoolaccount
- U kunt de OneDrive gebruiken die is gekoppeld aan het hierboven vermelde Microsoft-account (bijvoorbeeld OneDrive Business)
- Visual Studio 2022 geïnstalleerd
- U hebt uw app op Azure geregistreerd door de bovenstaande tips te raadplegen en de benodigde informatie te verkrijgen, zoals ID.
Een console-applicatie maken
Start Visual Studio en maak een project voor uw consoletoepassing. Je kunt het buiten Visual Studio maken, maar ik gebruik voorlopig Visual Studio.
De locatie en projectnaam zijn optioneel. In dit geval is OneDriveApiDotNetClientCredentialsMicrosoftGraph
de projectnaam .
Microsoft.Graph
Haal eerst de en Azure.Identity
bibliotheken van NuGet.
Deze keer zullen we de code niet verdelen, maar Program.cs
zullen we deze gespreid van bovenaf schrijven, dus als je de beweging kunt controleren, herschrijf deze dan door de code indien nodig te verdelen.
using Azure.Identity;
using Microsoft.Graph;
Beschrijf de naamruimte die u wilt gebruiken.
// 各種 ID などの定義
var clientId = "XXXXXXXX"; // クライアント ID
var tenantId = "XXXXXXXX"; // テナント ID
var clientSecret = "XXXXXXXX"; // クライアント シークレット
var userId = "XXXXXXXX"; // ユーザー ID
Stel de id in die voor elk in Azure is verkregen.
// 使いまわすので最初に定義しておく
HttpClient httpClient = new();
U heeft een gegenereerd om een verzoek in te dienen bij HttpClient
de opgegeven URL.
// クライアント シークレットによる認証情報を定義
ClientSecretCredential clientSecretCredential = new(tenantId, clientId, clientSecret);
// HttpClient と認証情報で Microsoft Graph サービスのクライアントを生成
using GraphServiceClient graphClient = new(httpClient, clientSecretCredential);
Definieer het clientgeheim met behulp van de ID die u hebt verkregen, enzovoort.
U kunt die gegevens gebruiken om HttpClient
GraphServiceClient
een exemplaar van .
Dit wordt GraphServiceClient
vaak gebruikt om toegang te krijgen tot verschillende API's.
// 対象ユーザーに紐づく OneDrive を取得 (紐づいているドライブが OneDrive 1つという前提)
var drive = await graphClient.Users[userId].Drive.GetAsync();
if (drive == null)
{
Console.WriteLine("ドライブを取得できませんでした。");
return;
}
GraphServiceClient
om de OneDrive als eerste aan de gebruiker te koppelen.
Als u meerdere stations hebt gekoppeld, Drives
zoekt en haalt u de doel-OneDrive op van .
Het kan zijn dat er ook een andere schijf dan OneDrive gekoppeld is, maar ik heb nog niet zo veel gecheckt.
Als u zeker weet dat er slechts één OneDrive is gekoppeld, kunt u Drive
deze krijgen zoals deze in de eigenschappen staat.
// OneDrive のルートを取得
var root = await graphClient.Drives[drive.Id].Root.GetAsync();
if (root == null)
{
Console.WriteLine("OneDrive のルートを取得できませんでした。");
return;
}
Zodra u OneDrive hebt, hebt u er vrij toegang toe. Als u de ID van een map of bestand opzoekt, kunt u deze rechtstreeks opgeven. Allereerst heb ik niets gecontroleerd, dus ik krijg de hoofdmap.
// ルート直下にあるフォルダ一覧取得
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}");
}
Zodra u de hoofdmap heeft, Children
kunt u er een lijst met bestanden en mappen direct onder krijgen.
Daarna som ik de opgehaalde waarden op en geef ik de namen weer.
Samenvatting
Ik heb geprobeerd om code te schrijven met behulp van de bibliotheek van "Microsoft Graph". Ik denk dat je de hoeveelheid code aanzienlijk kunt verminderen in vergelijking met het openen van de URL van de API.
Ik denk echter dat de nadelen zijn dat verschillende versies van de bibliotheek kapotte wijzigingen in de code kunnen veroorzaken en dat er weinig documentatie is. Als je deze kunt verdragen, denk ik dat het voordeliger zou zijn om de hoeveelheid code die je schrijft te verminderen.
Bedankt
Ik had deze keer wat vragen over het gebruik van de OneDrive-API, dus ik heb een vraag gesteld.