Používanie rozhrania OneDrive API bez interakcie používateľa, ako je napríklad dávkový program (verzia .NET C#) (pomocou knižnice Microsoft Graph)
Prevádzkové prostredie
- Visual Studio
-
- Visual Studio 2022
- .SIEŤ
-
- .NET 8
- Microsoft Authentication API
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.54.0
- Typy kont Microsoft
-
- Pracovné alebo školské konto
Predpoklady
- Visual Studio
-
- Jedna z verzií
- .SIEŤ
-
- Jedna z verzií
- Microsoft Authentication API
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- Typy kont Microsoft
-
- Pracovné alebo školské konto
O tomto tipe
Tento tip je upravený program využívajúci knižnicu založenú na Microsoft Graph
nasledujúcich tipoch.
Preto si pozrite nasledujúci postup tipov pre prehľad a postup prevádzky v Azure a pozrite si tento tip pri vytváraní programu.
Predpokladom
- Máte konto Microsoft pre pracovné alebo školské konto
- Môžete použiť OneDrive priradený ku kontu Microsoft uvedenému vyššie (napr. OneDrive Business)
- Nainštalovaný Visual Studio 2022
- Zaregistrovali ste svoju aplikáciu v Azure podľa vyššie uvedených tipov a získali ste potrebné informácie, ako je napríklad ID.
Vytvorenie konzolovej aplikácie
Spustite Visual Studio a vytvorte projekt pre konzolovú aplikáciu. Môžete ho vytvoriť mimo Visual Studia, ale zatiaľ budem používať Visual Studio.
Umiestnenie a názov projektu sú voliteľné. V tomto prípade je OneDriveApiDotNetClientCredentialsMicrosoftGraph
názov projektu .
Microsoft.Graph
Najprv získajte knižnice a Azure.Identity
z NuGetu.
Tentokrát kód nebudeme rozdeľovať, ale Program.cs
napíšeme ho rozložený zhora, takže ak môžete skontrolovať pohyb, prepíšte ho rozdelením kódu podľa potreby.
using Azure.Identity;
using Microsoft.Graph;
Popíšte priestor názvov, ktorý chcete použiť.
// 各種 ID などの定義
var clientId = "XXXXXXXX"; // クライアント ID
var tenantId = "XXXXXXXX"; // テナント ID
var clientSecret = "XXXXXXXX"; // クライアント シークレット
var userId = "XXXXXXXX"; // ユーザー ID
Nastavte ID získané v Azure pre každú z nich.
// 使いまわすので最初に定義しておく
HttpClient httpClient = new();
Vygenerovali ste a na odoslanie žiadosti na HttpClient
zadanú adresu URL.
// クライアント シークレットによる認証情報を定義
ClientSecretCredential clientSecretCredential = new(tenantId, clientId, clientSecret);
// HttpClient と認証情報で Microsoft Graph サービスのクライアントを生成
using GraphServiceClient graphClient = new(httpClient, clientSecretCredential);
Definujte tajný kľúč klienta pomocou ID, ktoré ste získali, atď.
Tieto údaje môžete použiť na HttpClient
GraphServiceClient
vytvorenie inštancie .
Často sa používa GraphServiceClient
na prístup k rôznym rozhraniam API.
// 対象ユーザーに紐づく OneDrive を取得 (紐づいているドライブが OneDrive 1つという前提)
var drive = await graphClient.Users[userId].Drive.GetAsync();
if (drive == null)
{
Console.WriteLine("ドライブを取得できませんでした。");
return;
}
GraphServiceClient
na priradenie OneDrivu k používateľovi ako prvej.
Ak máte prepojených viacero jednotiek, Drives
vyhľadajte a načítajte cieľový OneDrive z .
Je možné, že je prepojená aj iná jednotka ako OneDrive, ale toľko som nekontroloval.
Ak ste si istí, že je prepojený iba jeden OneDrive, môžete ho získať tak, Drive
ako je vo vlastnostiach.
// OneDrive のルートを取得
var root = await graphClient.Drives[drive.Id].Root.GetAsync();
if (root == null)
{
Console.WriteLine("OneDrive のルートを取得できませんでした。");
return;
}
Keď budete mať OneDrive, budete k nemu mať voľný prístup. Ak hľadáte ID priečinka alebo súboru, môžete ho zadať priamo. Po prvé, nič som neskontroloval, takže dostávam koreňový priečinok.
// ルート直下にあるフォルダ一覧取得
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}");
}
Keď budete mať koreňový priečinok, Children
môžete získať zoznam súborov a priečinkov priamo pod ním.
Potom vyčíslim načítané hodnoty a zobrazím mená.
Súhrn
Pokúsil som sa napísať kód pomocou knižnice "Microsoft Graph". Myslím si, že môžete výrazne znížiť množstvo kódu v porovnaní s prístupom k URL API.
Myslím si však, že nevýhodou je, že rôzne verzie knižnice môžu spôsobiť prelomové zmeny v kóde a dokumentácie je malá. Ak ich dokážete tolerovať, myslím si, že by bolo výhodnejšie znížiť množstvo kódu, ktorý píšete.
vďaka
Tentokrát som mal niekoľko otázok týkajúcich sa používania rozhrania OneDrive API, tak som položil otázku.