OneDrive API izmantošana bez lietotāja mijiedarbības, piemēram, pakešprogrammas (.NET C# versija) izmantošana (izmantojot Microsoft Graph bibliotēku)
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.