Uporaba API-ja za OneDrive brez posredovanja uporabnika, na primer paketnega programa (različica .NET C#) (s knjižnico Microsoft Graph)

Stran posodobljena :
Datum ustvarjanja strani :

Delovno okolje

Visual Studio
  • Visual Studio 2022
.MREŽA
  • .NET 8
Microsoftov API za preverjanje pristnosti
  • 2.0 OAuth 2
Microsoft OneDrive API
  • 1.0
Microsoft.Graph
  • 5.54.0
Vrste Microsoftovih računov
  • Službeni ali šolski račun

Predpogoji

Visual Studio
  • Ena od različic
.MREŽA
  • Ena od različic
Microsoftov API za preverjanje pristnosti
  • 2.0 OAuth 2
Microsoft OneDrive API
  • 1.0
Microsoft.Graph
  • 5.XX
Vrste Microsoftovih računov
  • Službeni ali šolski račun

O tem nasvetu

Ta nasvet je spremenjen program, ki uporablja knjižnico, ki temelji na Microsoft Graph naslednjih nasvetih. Zato si oglejte naslednji postopek z nasveti za pregled in postopek delovanja v storitvi Azure ter si oglejte ta nasvet, ko gradite program.

Pogoj

  • Imate Microsoftov račun za službeni ali šolski račun
  • Uporabite lahko OneDrive, ki je povezan z zgoraj navedenim Microsoftovim računom (npr. OneDrive Business)
  • Nameščen je Visual Studio 2022
  • Aplikacijo ste registrirali v storitvi Azure tako, da se sklicujete na zgornje nasvete in pridobili potrebne podatke, kot je ID.

Ustvarjanje konzolnega programa

Zaženite Visual Studio in ustvarite projekt za konzolno aplikacijo. Ustvarite ga lahko zunaj Visual Studia, vendar bom za zdaj uporabljal Visual Studio.

Lokacija in ime projekta sta izbirna. V tem primeru je OneDriveApiDotNetClientCredentialsMicrosoftGraph ime projekta .

Microsoft.Graph Najprej pridobite knjižnice in Azure.Identity iz NuGeta.

Tokrat kode ne bomo razdelili, ampak Program.cs jo bomo napisali razporejeno od zgoraj, tako da, če lahko preverite gibanje, ga po potrebi prepišite tako, da kodo razdelite.

using Azure.Identity;
using Microsoft.Graph;

Opišite imenski prostor, ki ga želite uporabiti.

// 各種 ID などの定義
var clientId = "XXXXXXXX";      // クライアント ID
var tenantId = "XXXXXXXX";      // テナント ID
var clientSecret = "XXXXXXXX";  // クライアント シークレット
var userId = "XXXXXXXX";        // ユーザー ID

Nastavite ID, pridobljen v storitvi Azure, za vsakega.

// 使いまわすので最初に定義しておく
HttpClient httpClient = new();

Ustvarili ste a, da pošljete zahtevo na HttpClient določen URL.

// クライアント シークレットによる認証情報を定義
ClientSecretCredential clientSecretCredential = new(tenantId, clientId, clientSecret);

// HttpClient と認証情報で Microsoft Graph サービスのクライアントを生成
using GraphServiceClient graphClient = new(httpClient, clientSecretCredential);

Določite skrivnost odjemalca z ID-jem, ki ste ga pridobili, in tako naprej. Te podatke lahko uporabite za HttpClient GraphServiceClient ustvarjanje primerka . To se GraphServiceClient pogosto uporablja za dostop do različnih API-jev.

// 対象ユーザーに紐づく OneDrive を取得 (紐づいているドライブが OneDrive 1つという前提)
var drive = await graphClient.Users[userId].Drive.GetAsync();
if (drive == null)
{
  Console.WriteLine("ドライブを取得できませんでした。");
  return;
}

GraphServiceClient , da najprej povežete OneDrive z uporabnikom. Če imate povezanih več pogonov, Drives poiščite in pridobite ciljno storitev OneDrive iz . Možno je, da je povezan tudi pogon, ki ni OneDrive, vendar nisem preveril toliko. Če ste prepričani, da je povezana le ena storitev OneDrive, jo lahko dobite Drive tako, kot je v lastnostih.

// OneDrive のルートを取得
var root = await graphClient.Drives[drive.Id].Root.GetAsync();
if (root == null)
{
  Console.WriteLine("OneDrive のルートを取得できませんでした。");
  return;
}

Ko imate OneDrive, lahko prosto dostopate do njega. Če iščete ID mape ali datoteke, ga lahko določite neposredno. Prvič, nisem ničesar preveril, zato dobim korensko mapo.

// ルート直下にあるフォルダ一覧取得
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}");
}

Ko imate korensko mapo, Children lahko dobite seznam datotek in map neposredno pod njo. Po tem naštejem pridobljene vrednosti in prikažem imena.

Povzetek

Poskušal sem napisati kodo s knjižnico »Microsoft Graph«. Mislim, da lahko znatno zmanjšate količino kode v primerjavi z dostopom do URL-ja API-ja.

Vendar pa mislim, da so slabosti v tem, da lahko različne različice knjižnice povzročijo prelomne spremembe kode in je malo dokumentacije. Če jih lahko prenesete, mislim, da bi bilo bolj koristno zmanjšati količino kode, ki jo napišete.

hvala

Tokrat sem imel nekaj vprašanj o uporabi API-ja za OneDrive, zato sem zastavil vprašanje.