Naudokite "OneDrive" API be vartotojo sąveikos, pvz., paketinę programą (.NET C# versija) (naudodami "Microsoft Graph" biblioteką)
Darbo aplinka
- Vizualinė studija
-
- "Visual Studio 2022"
- .GRYNOJI
-
- .NET 8
- "Microsoft" autentifikavimo API
-
- 2.0 OAuth 2
- "Microsoft OneDrive" API
-
- 1.0
- Microsoft.Graph
-
- 5.54.0
- "Microsoft" paskyrų tipai
-
- Darbo arba mokymo įstaigos paskyra
Būtinosios sąlygos
- Vizualinė studija
-
- Viena iš versijų
- .GRYNOJI
-
- Viena iš versijų
- "Microsoft" autentifikavimo API
-
- 2.0 OAuth 2
- "Microsoft OneDrive" API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- "Microsoft" paskyrų tipai
-
- Darbo arba mokymo įstaigos paskyra
Apie šį patarimą
Šis patarimas yra modifikuota programa, naudojanti biblioteką, pagrįsta Microsoft Graph
šiais patarimais.
Todėl peržiūrėkite toliau pateiktus patarimus, kad sužinotumėte apžvalgos ir veikimo procedūrą "Azure", ir skaitykite šį patarimą, kai kuriate programą.
Prielaida
- Turite "Microsoft" paskyrą, skirtą darbo arba mokymo įstaigos paskyrai
- Galite naudoti "OneDrive", susietą su anksčiau nurodyta "Microsoft" paskyra (pvz., "OneDrive Business")
- Įdiegta "Visual Studio 2022"
- Užregistravote savo programą "Azure" remdamiesi anksčiau pateiktais patarimais ir gavote reikiamą informaciją, pvz., ID.
Sukurkite konsolės programą
Paleiskite "Visual Studio" ir sukurkite konsolės programos projektą. Galite sukurti jį ne "Visual Studio", bet kol kas naudosiu "Visual Studio".
Vieta ir projekto pavadinimas yra pasirinktiniai. Tokiu atveju projekto pavadinimas yra OneDriveApiDotNetClientCredentialsMicrosoftGraph
.
Microsoft.Graph
Pirmiausia gaukite bibliotekas iš Azure.Identity
"NuGet".
Šį kartą kodo neskirstysime, o Program.cs
rašysime jį iš viršaus, todėl, jei galite patikrinti judesį, perrašykite jį, jei reikia, padaliję kodą.
using Azure.Identity;
using Microsoft.Graph;
Aprašykite vardų sritį, kurią norite naudoti.
// 各種 ID などの定義
var clientId = "XXXXXXXX"; // クライアント ID
var tenantId = "XXXXXXXX"; // テナント ID
var clientSecret = "XXXXXXXX"; // クライアント シークレット
var userId = "XXXXXXXX"; // ユーザー ID
Nustatykite kiekvieno iš jų ID, gautą "Azure".
// 使いまわすので最初に定義しておく
HttpClient httpClient = new();
Sugeneravote užklausą HttpClient
nurodytu URL.
// クライアント シークレットによる認証情報を定義
ClientSecretCredential clientSecretCredential = new(tenantId, clientId, clientSecret);
// HttpClient と認証情報で Microsoft Graph サービスのクライアントを生成
using GraphServiceClient graphClient = new(httpClient, clientSecretCredential);
Apibrėžkite kliento paslaptį naudodami gautą ID ir pan.
Šiuos duomenis galite naudoti norėdami HttpClient
GraphServiceClient
sukurti "" egzempliorių.
GraphServiceClient
Tai dažnai naudojama norint pasiekti įvairias API.
// 対象ユーザーに紐づく OneDrive を取得 (紐づいているドライブが OneDrive 1つという前提)
var drive = await graphClient.Users[userId].Drive.GetAsync();
if (drive == null)
{
Console.WriteLine("ドライブを取得できませんでした。");
return;
}
GraphServiceClient
, kad pirmiausia gautumėte "OneDrive", susietą su vartotoju.
Jei turite susietus kelis diskus, Drives
raskite ir gaukite paskirties "OneDrive" iš .
Gali būti, kad taip pat susietas ne "OneDrive", o kitas diskas, bet aš tiek daug netikrinau.
Jei esate tikri, kad susietas tik vienas "OneDrive", galite Drive
jį gauti tokį, koks jis yra ypatybėse.
// OneDrive のルートを取得
var root = await graphClient.Drives[drive.Id].Root.GetAsync();
if (root == null)
{
Console.WriteLine("OneDrive のルートを取得できませんでした。");
return;
}
Kai turėsite "OneDrive", galėsite ją laisvai pasiekti. Jei ieškote aplanko ar failo ID, galite jį nurodyti tiesiogiai. Visų pirma, aš nieko netikrinau, todėl gaunu šakninį aplanką.
// ルート直下にあるフォルダ一覧取得
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}");
}
Kai turėsite šakninį aplanką, Children
galėsite gauti failų ir aplankų sąrašą tiesiai po juo.
Po to išvardiju gautas reikšmes ir rodau vardus.
Suvestinė
Bandžiau rašyti kodą naudodamas "Microsoft Graph" biblioteką. Manau, kad galite žymiai sumažinti kodo kiekį, palyginti su prieiga prie API URL.
Tačiau manau, kad trūkumai yra tai, kad skirtingos bibliotekos versijos gali sukelti esminius kodo pakeitimus ir yra mažai dokumentų. Jei galite tai toleruoti, manau, kad būtų naudingiau sumažinti rašomo kodo kiekį.
ačiū
Šį kartą turėjau klausimų apie "OneDrive" API naudojimą, todėl uždaviau klausimą.