OneDrive'i API kasutamine ilma kasutaja sekkumiseta (nt pakettprogramm (.NET C# versioon) (kasutades Microsoft Graphi teeki)
Töökeskkond
- Visuaalne stuudio
-
- Visuaalne stuudio 2022
- .NET
-
- .NET 8
- Microsofti autentimise API
-
- 2.0 OAuth 2
- Microsoft OneDrive'i API
-
- 1.0
- Microsoft.Graph
-
- 5.54.0
- Microsofti kontode tüübid
-
- Töö- või koolikonto
Eeltingimused
- Visuaalne stuudio
-
- Üks versioonidest
- .NET
-
- Üks versioonidest
- Microsofti autentimise API
-
- 2.0 OAuth 2
- Microsoft OneDrive'i API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- Microsofti kontode tüübid
-
- Töö- või koolikonto
Selle näpunäite kohta
See näpunäide on muudetud programm, mis kasutab teeki, mis põhineb Microsoft Graph
järgmistel näpunäidetel.
Seetõttu vaadake Azure'i ülevaate ja tööprotseduuri saamiseks järgmisi näpunäiteid ning programmi koostamisel vaadake seda näpunäidet.
Eeltingimus
- Teil on Microsofti konto töö- või koolikonto jaoks
- Saate kasutada ülaltoodud Microsofti kontoga seotud OneDrive'i (nt OneDrive Business)
- Visual Studio 2022 on installitud
- Olete oma rakenduse Azure'is ülaltoodud näpunäidete abil registreerinud ja hankinud vajaliku teabe, näiteks ID.
Konsoolirakenduse loomine
Käivitage Visual Studio ja looge oma konsoolirakenduse jaoks projekt. Saate selle luua väljaspool Visual Studiot, kuid praegu kasutan Visual Studiot.
Asukoht ja projekti nimi on valikulised. Sel juhul on OneDriveApiDotNetClientCredentialsMicrosoftGraph
projekti nimi .
Microsoft.Graph
Esiteks hankige NuGetist teegid ja Azure.Identity
teegid.
Seekord me koodi ei jaga, vaid Program.cs
kirjutame selle ülalt järk-järgult, nii et kui saate liikumist kontrollida, kirjutage see ümber, jagades koodi vastavalt vajadusele.
using Azure.Identity;
using Microsoft.Graph;
Kirjeldage nimeruumi, mida soovite kasutada.
// 各種 ID などの定義
var clientId = "XXXXXXXX"; // クライアント ID
var tenantId = "XXXXXXXX"; // テナント ID
var clientSecret = "XXXXXXXX"; // クライアント シークレット
var userId = "XXXXXXXX"; // ユーザー ID
Määrake igaühe jaoks Azure'is saadud ID.
// 使いまわすので最初に定義しておく
HttpClient httpClient = new();
Olete loonud päringu HttpClient
esitamiseks määratud URL-ile.
// クライアント シークレットによる認証情報を定義
ClientSecretCredential clientSecretCredential = new(tenantId, clientId, clientSecret);
// HttpClient と認証情報で Microsoft Graph サービスのクライアントを生成
using GraphServiceClient graphClient = new(httpClient, clientSecretCredential);
Määratlege kliendi saladus saadud ID abil jne.
Nende andmete HttpClient
GraphServiceClient
abil saate luua eksemplari .
Seda kasutatakse GraphServiceClient
sageli erinevatele API-dele juurdepääsuks.
// 対象ユーザーに紐づく OneDrive を取得 (紐づいているドライブが OneDrive 1つという前提)
var drive = await graphClient.Users[userId].Drive.GetAsync();
if (drive == null)
{
Console.WriteLine("ドライブを取得できませんでした。");
return;
}
GraphServiceClient
, et OneDrive esmalt kasutajaga seostada.
Kui teil on lingitud Drives
mitu draivi, otsige üles ja hankige siht OneDrive aadressilt .
Võimalik, et lingitud on ka mõni muu draiv peale OneDrive'i, kuid ma pole nii palju kontrollinud.
Kui olete kindel, et lingitud on ainult üks OneDrive, saate Drive
selle atribuutides oleval kujul hankida.
// OneDrive のルートを取得
var root = await graphClient.Drives[drive.Id].Root.GetAsync();
if (root == null)
{
Console.WriteLine("OneDrive のルートを取得できませんでした。");
return;
}
Kui teil on OneDrive, pääsete sellele vabalt juurde. Kui otsite kausta või faili ID-d, saate selle otse määrata. Esiteks pole ma midagi kontrollinud, nii et saan juurkausta.
// ルート直下にあるフォルダ一覧取得
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}");
}
Kui teil on juurkaust, Children
saate failide ja kaustade loendi otse selle alla.
Pärast seda loetlen leitud väärtused ja kuvan nimed.
Kokkuvõte
Proovisin koodi kirjutada, kasutades "Microsoft Graphi" teeki. Ma arvan, et saate koodi mahtu märkimisväärselt vähendada võrreldes API URL-ile juurdepääsuga.
Siiski arvan, et puuduseks on see, et teegi erinevad versioonid võivad põhjustada koodis murrangulisi muudatusi ja dokumentatsiooni on vähe. Kui sa suudad neid taluda, siis ma arvan, et kasulikum oleks vähendada kirjutatava koodi hulka.
Tänud
Mul oli seekord OneDrive'i API kasutamise kohta mõned küsimused, nii et esitasin küsimuse.