Használja a OneDrive API-t felhasználói beavatkozás nélkül, például kötegelt programot (.NET C#-verzió) (a Microsoft Graph kódtár használatával)
Működési környezet
- Visual Studio
-
- Visual Studio 2022
- .HÁLÓ
-
- .NET 8
- Microsoft hitelesítési API
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.54.0
- A Microsoft-fiókok típusai
-
- Munkahelyi vagy iskolai fiók
Előfeltételek
- Visual Studio
-
- Az egyik verzió
- .HÁLÓ
-
- Az egyik verzió
- Microsoft hitelesítési API
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- A Microsoft-fiókok típusai
-
- Munkahelyi vagy iskolai fiók
Erről a tippről
Ez a tipp egy módosított program, amely a következő tippeken alapuló Microsoft Graph
könyvtárat használja.
Ezért tekintse meg az alábbi tippeket az Azure-beli áttekintéshez és művelethez, és tekintse meg ezt a tippet a program létrehozásakor.
előfeltétel
- Munkahelyi vagy iskolai fiókhoz Microsoft-fiókkal rendelkezik
- Használhatja a fent felsorolt Microsoft-fiókhoz társított OneDrive-ot (pl. OneDrive Business)
- A Visual Studio 2022 telepítve van
- A fenti tippek alapján regisztrálta az alkalmazást az Azure-ban, és beszerezte a szükséges információkat, például az azonosítót.
Konzolalkalmazás létrehozása
Indítsa el a Visual Studiót, és hozzon létre egy projektet a konzolalkalmazáshoz. A Visual Studión kívül is létrehozhatja, de egyelőre a Visual Studiót fogom használni.
A hely és a projekt neve nem kötelező. Ebben az esetben a projekt neve .OneDriveApiDotNetClientCredentialsMicrosoftGraph
Microsoft.Graph
Először szerezze be a és könyvtárakat Azure.Identity
a NuGetből.
Ezúttal nem osztjuk fel a kódot, hanem Program.cs
felülről lépcsőzetesen írjuk, így ha ellenőrizni tudod a mozgást, kérjük, írd át a kód szükség szerinti felosztásával.
using Azure.Identity;
using Microsoft.Graph;
Írja le a használni kívánt névteret.
// 各種 ID などの定義
var clientId = "XXXXXXXX"; // クライアント ID
var tenantId = "XXXXXXXX"; // テナント ID
var clientSecret = "XXXXXXXX"; // クライアント シークレット
var userId = "XXXXXXXX"; // ユーザー ID
Állítsa be az Azure-ban beszerzett azonosítót.
// 使いまわすので最初に定義しておく
HttpClient httpClient = new();
Létrehozta a kérés HttpClient
kérését a megadott URL-címre.
// クライアント シークレットによる認証情報を定義
ClientSecretCredential clientSecretCredential = new(tenantId, clientId, clientSecret);
// HttpClient と認証情報で Microsoft Graph サービスのクライアントを生成
using GraphServiceClient graphClient = new(httpClient, clientSecretCredential);
Határozza meg az ügyfél titkos kulcsát a kapott azonosítóval, és így tovább.
Ezen adatok HttpClient
GraphServiceClient
segítségével létrehozhat egy példányt .
Ezt GraphServiceClient
gyakran használják különböző API-k elérésére.
// 対象ユーザーに紐づく OneDrive を取得 (紐づいているドライブが OneDrive 1つという前提)
var drive = await graphClient.Users[userId].Drive.GetAsync();
if (drive == null)
{
Console.WriteLine("ドライブを取得できませんでした。");
return;
}
GraphServiceClient
gombra a felhasználóhoz társított OneDrive első beállításához.
Ha több meghajtó van összekapcsolva, Drives
keresse meg és kérje le a cél OneDrive-ot a .
Lehetséges, hogy a OneDrive-tól eltérő meghajtó is össze van kapcsolva, de nem sokat ellenőriztem.
Ha biztos benne, hogy csak egy OneDrive van összekapcsolva, akkor Drive
a tulajdonságok között is megkaphatja.
// OneDrive のルートを取得
var root = await graphClient.Drives[drive.Id].Root.GetAsync();
if (root == null)
{
Console.WriteLine("OneDrive のルートを取得できませんでした。");
return;
}
Ha már rendelkezik a OneDrive-val, szabadon hozzáférhet hozzá. Ha egy mappa vagy fájl azonosítóját keresi, közvetlenül megadhatja azt. Először is, nem ellenőriztem semmit, ezért megkapom a gyökérmappát.
// ルート直下にあるフォルダ一覧取得
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}");
}
Ha megvan a gyökérmappa, Children
közvetlenül alatta kaphatja meg a fájlok és mappák listáját.
Ezt követően felsorolom a lekért értékeket és megjelenítem a neveket.
Összefoglalás
Megpróbáltam kódot írni a "Microsoft Graph" könyvtárával. Úgy gondolom, hogy jelentősen csökkentheti a kód mennyiségét az API URL-jének eléréséhez képest.
Úgy gondolom azonban, hogy a hátránya az, hogy a könyvtár különböző verziói kompatibilitástörő változtatásokat okozhatnak a kódban, és kevés a dokumentáció. Ha ezeket el tudod viselni, akkor szerintem előnyösebb lenne csökkenteni az írt kód mennyiségét.
kösz
Ezúttal volt néhány kérdésem a OneDrive API használatával kapcsolatban, ezért feltettem egy kérdést.