שימוש ב- API של OneDrive ללא אינטראקציה עם המשתמש, כגון תוכנית אצווה (גירסת .NET C# ) (באמצעות ספריית Microsoft Graph)
סביבת הפעלה
- Visual Studio
-
- Visual Studio 2022
- .רשת
-
- .NET 8
- API של אימות Microsoft
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.54.0
- סוגי חשבונות Microsoft
-
- חשבון בעבודה או בבית ספר
דרישות מוקדמות
- Visual Studio
-
- אחת הגרסאות
- .רשת
-
- אחת הגרסאות
- API של אימות Microsoft
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- סוגי חשבונות Microsoft
-
- חשבון בעבודה או בבית ספר
אודות טיפ זה
עצה זו היא תוכנית ששונתה באמצעות הספריה בהתבסס על Microsoft Graph
העצות הבאות.
לכן, עיין בהליך העצות הבא לקבלת מבט כולל והליך פעולה ב- Azure, ועיין בעצה זו בעת בניית התוכנית.
תנאי מקדים
- יש לך חשבון Microsoft עבור חשבון בעבודה או בבית ספר
- באפשרותך להשתמש ב- OneDrive המשויך לחשבון Microsoft המפורט לעיל (לדוגמה, OneDrive Business)
- Visual Studio 2022 מותקן
- רשמת את האפליקציה שלך ב- Azure על-ידי עיון בעצות לעיל וקיבלת את המידע הדרוש, כגון מזהה.
יצירת יישום מסוף
הפעל את Visual Studio וצור פרוייקט עבור יישום הקונסולה שלך. באפשרותך ליצור אותו מחוץ ל- Visual Studio, אך אשתמש ב- Visual Studio לעת עתה.
המיקום ושם הפרויקט הם אופציונליים. במקרה זה, שם הפרויקט הוא OneDriveApiDotNetClientCredentialsMicrosoftGraph
.
Microsoft.Graph
ראשית, קבל את הספריות והספריות Azure.Identity
מ- NuGet.
הפעם, לא נחלק את הקוד, אלא Program.cs
נכתוב אותו מדורג מלמעלה, כך שאם אתה יכול לבדוק את התנועה, אנא כתוב אותה מחדש על ידי חלוקת הקוד לפי הצורך.
using Azure.Identity;
using Microsoft.Graph;
תאר את מרחב השמות שבו ברצונך להשתמש.
// 各種 ID などの定義
var clientId = "XXXXXXXX"; // クライアント ID
var tenantId = "XXXXXXXX"; // テナント ID
var clientSecret = "XXXXXXXX"; // クライアント シークレット
var userId = "XXXXXXXX"; // ユーザー ID
הגדר את המזהה שהתקבל ב- Azure עבור כל אחד מהם.
// 使いまわすので最初に定義しておく
HttpClient httpClient = new();
יצרת כדי להגיש בקשה לכתובת HttpClient
ה- URL שצוינה.
// クライアント シークレットによる認証情報を定義
ClientSecretCredential clientSecretCredential = new(tenantId, clientId, clientSecret);
// HttpClient と認証情報で Microsoft Graph サービスのクライアントを生成
using GraphServiceClient graphClient = new(httpClient, clientSecretCredential);
הגדר את סוד הלקוח באמצעות המזהה שקיבלת וכן הלאה.
באפשרותך להשתמש בנתונים אלה כדי HttpClient
GraphServiceClient
ליצור מופע של .
זה משמש GraphServiceClient
לעתים קרובות כדי לגשת ממשקי API שונים.
// 対象ユーザーに紐づく OneDrive を取得 (紐づいているドライブが OneDrive 1つという前提)
var drive = await graphClient.Users[userId].Drive.GetAsync();
if (drive == null)
{
Console.WriteLine("ドライブを取得できませんでした。");
return;
}
GraphServiceClient
כדי לשייך תחילה את OneDrive למשתמש.
אם מקושרים לך כוננים מרובים, Drives
אתר ואחזר את היעד OneDrive מ- .
ייתכן שגם כונן שאינו OneDrive מקושר, אבל לא בדקתי כל כך הרבה.
אם אתה בטוח שרק OneDrive אחד מקושר, תוכל Drive
לקבל אותו כפי שהוא במאפיינים.
// OneDrive のルートを取得
var root = await graphClient.Drives[drive.Id].Root.GetAsync();
if (root == null)
{
Console.WriteLine("OneDrive のルートを取得できませんでした。");
return;
}
לאחר שיהיה לך OneDrive, תוכל לגשת אליו באופן חופשי. אם אתה מחפש את המזהה של תיקיה או קובץ, באפשרותך לציין אותו ישירות. קודם כל, לא בדקתי שום דבר, אז אני מקבל את תיקיית השורש.
// ルート直下にあるフォルダ一覧取得
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}");
}
ברגע שיש לך את תיקיית השורש, Children
אתה יכול לקבל רשימה של קבצים ותיקיות ישירות מתחתיה.
לאחר מכן, אני מונה את הערכים שאוחזרו ומציג את השמות.
תקציר
ניסיתי לכתוב קוד באמצעות הספרייה של "Microsoft Graph". אני חושב שאתה יכול להפחית את כמות הקוד באופן משמעותי בהשוואה לגישה לכתובת האתר של ה- API.
עם זאת, אני חושב שהחסרונות הם שגרסאות שונות של הספרייה יכולות לגרום לשינויים בקוד ויש מעט תיעוד. אם אתה יכול לסבול את אלה, אני חושב שזה יהיה מועיל יותר להפחית את כמות הקוד שאתה כותב.
תודה
היו לי כמה שאלות לגבי השימוש ב- API של OneDrive הפעם, אז שאלתי שאלה.