Použití rozhraní API OneDrive bez zásahu uživatele, například dávkového programu (verze .NET C#) (pomocí knihovny Microsoft Graph)
Provozní prostředí
- Vizuální studio
-
- Visual Studio 2022
- .SÍŤ
-
- .NET 8
- Rozhraní API pro ověřování společnosti Microsoft
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Soubor Microsoft.Graph
-
- 5.54.0
- Typy účtů Microsoft
-
- Pracovní nebo školní účet
Požadavky
- Vizuální studio
-
- Jedna z verzí
- .SÍŤ
-
- Jedna z verzí
- Rozhraní API pro ověřování společnosti Microsoft
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Soubor Microsoft.Graph
-
- 5.XX
- Typy účtů Microsoft
-
- Pracovní nebo školní účet
O tomto tipu
Tento tip je upravený program využívající knihovnu založenou na Microsoft Graph
následujících tipech.
Proto se podívejte na následující postup tipů, kde najdete přehled a provozní postup v Azure, a při sestavování programu se řiďte tímto tipem.
předpoklad
- Máte účet Microsoft pro pracovní nebo školní účet
- Můžete používat OneDrive spojený s výše uvedeným účtem Microsoft (např. OneDrive Business)
- Nainstalované Visual Studio 2022
- Zaregistrovali jste svou aplikaci v Azure podle výše uvedených tipů a získali jste potřebné informace, jako je ID.
Vytvoření konzolové aplikace
Spusťte Visual Studio a vytvořte projekt pro konzolovou aplikaci. Můžete jej vytvořit mimo Visual Studio, ale prozatím budu používat Visual Studio.
Umístění a název projektu jsou volitelné. V tomto případě je OneDriveApiDotNetClientCredentialsMicrosoftGraph
název projektu .
Microsoft.Graph
Nejprve si stáhněte knihovny a Azure.Identity
z NuGetu.
Tentokrát nebudeme kód dělit, ale Program.cs
budeme jej zapisovat střídavě shora, takže pokud můžete pohyb zkontrolovat, přepište jej prosím dělením kódu podle potřeby.
using Azure.Identity;
using Microsoft.Graph;
Popište jmenný prostor, který chcete použít.
// 各種 ID などの定義
var clientId = "XXXXXXXX"; // クライアント ID
var tenantId = "XXXXXXXX"; // テナント ID
var clientSecret = "XXXXXXXX"; // クライアント シークレット
var userId = "XXXXXXXX"; // ユーザー ID
Pro každý z nich nastavte ID získané v Azure.
// 使いまわすので最初に定義しておく
HttpClient httpClient = new();
Vygenerovali jste a pro vytvoření požadavku na HttpClient
zadanou adresu URL.
// クライアント シークレットによる認証情報を定義
ClientSecretCredential clientSecretCredential = new(tenantId, clientId, clientSecret);
// HttpClient と認証情報で Microsoft Graph サービスのクライアントを生成
using GraphServiceClient graphClient = new(httpClient, clientSecretCredential);
Definujte tajný klíč klienta pomocí ID, které jste získali, a tak dále.
Tato data můžete použít k HttpClient
GraphServiceClient
vytvoření instance .
To se GraphServiceClient
často používá pro přístup k různým rozhraním API.
// 対象ユーザーに紐づく OneDrive を取得 (紐づいているドライブが OneDrive 1つという前提)
var drive = await graphClient.Users[userId].Drive.GetAsync();
if (drive == null)
{
Console.WriteLine("ドライブを取得できませんでした。");
return;
}
GraphServiceClient
, aby byl OneDrive nejprve přidružen k uživateli.
Pokud máte propojeno více disků, Drives
vyhledejte a načtěte cílový OneDrive z .
Je možné, že je propojen i jiný disk než OneDrive, ale moc jsem to nekontroloval.
Pokud jste si jisti, že je propojen pouze jeden OneDrive, můžete jej získat tak, Drive
jak je ve vlastnostech.
// OneDrive のルートを取得
var root = await graphClient.Drives[drive.Id].Root.GetAsync();
if (root == null)
{
Console.WriteLine("OneDrive のルートを取得できませんでした。");
return;
}
Jakmile budete mít OneDrive, můžete k němu volně přistupovat. Pokud hledáte ID složky nebo souboru, můžete jej zadat přímo. Za prvé, nic jsem nezkontroloval, takže získávám kořenovou složku.
// ルート直下にあるフォルダ一覧取得
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}");
}
Jakmile budete mít kořenovou složku, Children
můžete získat seznam souborů a složek přímo pod ní.
Poté vyčtu načtené hodnoty a zobrazím názvy.
Shrnutí
Snažil jsem se psát kód pomocí knihovny "Microsoft Graph". Myslím, že můžete výrazně snížit množství kódu ve srovnání s přístupem k URL API.
Myslím si však, že nevýhody spočívají v tom, že různé verze knihovny mohou způsobit zásadní změny v kódu a existuje jen málo dokumentace. Pokud to můžete tolerovat, myslím, že by bylo výhodnější snížit množství kódu, který píšete.
Dík
Tentokrát jsem měl nějaké otázky ohledně použití rozhraní API OneDrive, a tak jsem položil otázku.