از OneDrive API بدون تعامل کاربر، مانند یک برنامه دسته ای (نسخه .NET C#) (با استفاده از کتابخانه Microsoft Graph) استفاده کنید.
محیط عملیاتی
- ویژوال استودیو
-
- ویژوال استودیو 2022
- .خالص
-
- دات نت 8
- API احراز هویت مایکروسافت
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- مایکروسافت گراف
-
- 5.54.0
- انواع حساب های مایکروسافت
-
- حساب کاری یا تحصیلی
پیش نیازها
- ویژوال استودیو
-
- یکی از نسخه ها
- .خالص
-
- یکی از نسخه ها
- API احراز هویت مایکروسافت
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- مایکروسافت گراف
-
- 5.XX
- انواع حساب های مایکروسافت
-
- حساب کاری یا تحصیلی
درباره این نکته
این نکته یک برنامه اصلاح شده با استفاده از کتابخانه بر اساس Microsoft Graph
نکات زیر است.
بنابراین، لطفا برای بررسی اجمالی و روش عملیات در Azure به روش نکات زیر مراجعه کنید و هنگام ساخت برنامه به این نکته مراجعه کنید.
پیش شرط
- شما یک حساب Microsoft برای یک حساب کاری یا تحصیلی دارید
- می توانید از OneDrive مرتبط با حساب مایکروسافت ذکر شده در بالا استفاده کنید (به عنوان مثال، OneDrive Business)
- ویژوال استودیو 2022 نصب شده است
- شما با مراجعه به نکات بالا برنامه خود را در Azure ثبت کرده اید و اطلاعات لازم مانند ID را به دست آورده اید.
ایجاد یک اپلیکیشن کنسول
ویژوال استودیو را راه اندازی کنید و یک پروژه برای اپلیکیشن کنسول خود ایجاد کنید. شما می توانید آن را خارج از ویژوال استودیو ایجاد کنید، اما من فعلا از ویژوال استودیو استفاده می کنم.
مکان و نام پروژه اختیاری است. در این حالت، نام پروژه است 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" کد بنویسم. من فکر می کنم شما می توانید مقدار کد را در مقایسه با دسترسی به URL API به میزان قابل توجهی کاهش دهید.
با این حال، من فکر می کنم معایب آن این است که نسخه های مختلف کتابخانه می توانند باعث تغییرات شکسته در کد شوند و مستندات کمی وجود دارد. اگر بتوانید این موارد را تحمل کنید، فکر می کنم کاهش میزان کدی که می نویسید سودمندتر خواهد بود.
ممنون
من این بار در مورد استفاده از OneDrive API سؤالاتی داشتم، بنابراین سوالی پرسیدم.