OneDrive API izmantošana bez lietotāja mijiedarbības, piemēram, pakešprogrammas (.NET C# versija) izmantošana (izmantojot Microsoft Graph bibliotēku)

Lapa atjaunota :
Lapas izveides datums :

Darbības vide

Visual Studio
  • Visual Studio 2022
.NETO
  • .NET 8
Microsoft autentifikācijas API
  • 2.0 OAuth 2
Microsoft OneDrive API
  • 1.0
Microsoft.Graph
  • 5.54.0
Microsoft kontu tipi
  • Darba vai mācību konts

Priekšnoteikumi

Visual Studio
  • Viena no versijām
.NETO
  • Viena no versijām
Microsoft autentifikācijas API
  • 2.0 OAuth 2
Microsoft OneDrive API
  • 1.0
Microsoft.Graph
  • 5.XX
Microsoft kontu tipi
  • Darba vai mācību konts

Par šo padomu

Šis padoms ir modificēta programma, kas izmanto bibliotēku, pamatojoties uz Microsoft Graph šādiem padomiem. Tāpēc, lūdzu, skatiet tālāk sniegto padomu procedūru, lai iegūtu pārskatu un darbības procedūru pakalpojumā Azure, un, veidojot programmu, skatiet šo padomu.

Priekšnosacījumu

  • Jums ir Microsoft konts darba vai mācību kontam
  • Varat izmantot OneDrive, kas saistīts ar iepriekš norādīto Microsoft kontu (piemēram, OneDrive Business)
  • Instalēta Visual Studio 2022
  • Jūs esat reģistrējis savu programmu pakalpojumā Azure, atsaucoties uz iepriekš sniegtajiem padomiem, un ieguvis nepieciešamo informāciju, piemēram, ID.

Izveidojiet konsoles lietojumprogrammu

Startējiet Visual Studio un izveidojiet projektu konsoles lietojumprogrammai. To var izveidot ārpus Visual Studio, bet pagaidām izmantošu Visual Studio.

Atrašanās vieta un projekta nosaukums nav obligāti. Šajā gadījumā projekta nosaukums ir OneDriveApiDotNetClientCredentialsMicrosoftGraph .

Microsoft.Graph Vispirms iegūstiet un Azure.Identity bibliotēkas no NuGet.

Šoreiz mēs nesadalīsim kodu, bet Program.cs rakstīsim to pakāpeniski no augšas, tāpēc, ja jūs varat pārbaudīt kustību, lūdzu, pārrakstiet to, sadalot kodu pēc vajadzības.

using Azure.Identity;
using Microsoft.Graph;

Aprakstiet nosaukumvietu, kuru vēlaties izmantot.

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

Katram iestatiet pakalpojumā Azure iegūto ID.

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

Jūs esat ģenerējis a, lai iesniegtu pieprasījumu uz HttpClient norādīto URL.

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

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

Definējiet klienta noslēpumu, izmantojot iegūto ID utt. Šos datus var izmantot, lai HttpClient GraphServiceClient izveidotu instanci. GraphServiceClient To bieži izmanto, lai piekļūtu dažādām API.

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

GraphServiceClient , lai vispirms saistītu OneDrive ar lietotāju. Ja jums ir saistīti vairāki diski, Drives atrodiet un izgūstiet mērķi OneDrive no . Iespējams, ka ir saistīts arī cits disks, nevis OneDrive, taču es neesmu tik daudz pārbaudījis. Ja esat pārliecināts, ka ir saistīts tikai viens OneDrive, varat Drive to iegūt tādu, kāds tas ir rekvizītos.

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

Kad jums ir OneDrive, varat tam brīvi piekļūt. Ja meklējat mapes vai faila ID, varat to norādīt tieši. Pirmkārt, es neko neesmu pārbaudījis, tāpēc es saņemu saknes mapi.

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

Kad esat ieguvis saknes mapi, Children varat iegūt failu un mapju sarakstu tieši zem tā. Pēc tam es uzskaitu izgūtās vērtības un parādu nosaukumus.

Kopsavilkuma

Es mēģināju rakstīt kodu, izmantojot "Microsoft Graph" bibliotēku. Es domāju, ka jūs varat ievērojami samazināt koda daudzumu, salīdzinot ar piekļuvi API URL.

Tomēr es domāju, ka trūkumi ir tādi, ka dažādas bibliotēkas versijas var izraisīt pārrāvuma izmaiņas kodā un ir maz dokumentācijas. Ja jūs varat tos paciest, es domāju, ka būtu izdevīgāk samazināt rakstītā koda daudzumu.

paldies

Man šoreiz bija daži jautājumi par OneDrive API lietošanu, tāpēc es uzdevu jautājumu.