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)

Stránka aktualizovaná :
Dátum vytvorenia strany :

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.