استخدام واجهة برمجة تطبيقات OneDrive دون تفاعل المستخدم، مثل برنامج دفعي (إصدار .NET C#) (باستخدام مكتبة Microsoft Graph)
بيئة التشغيل
- استوديو مرئي
-
- برنامج Visual Studio 2022
- .صافي
-
- .NET 8
- واجهة برمجة تطبيقات مصادقة Microsoft
-
- 2.0 OAuth 2
- واجهة برمجة تطبيقات Microsoft OneDrive
-
- 1.0
- Microsoft.Graph
-
- 5.54.0
- أنواع حسابات Microsoft
-
- حساب العمل أو المؤسسة التعليمية
المتطلبات المسبقه
- استوديو مرئي
-
- أحد الإصدارات
- .صافي
-
- أحد الإصدارات
- واجهة برمجة تطبيقات مصادقة Microsoft
-
- 2.0 OAuth 2
- واجهة برمجة تطبيقات Microsoft OneDrive
-
- 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
يستخدم هذا للوصول إلى واجهات برمجة التطبيقات المختلفة.
// 対象ユーザーに紐づく 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 لواجهة برمجة التطبيقات.
ومع ذلك ، أعتقد أن العيوب هي أن الإصدارات المختلفة من المكتبة يمكن أن تتسبب في حدوث تغييرات في الكود وهناك القليل من الوثائق. إذا كنت تستطيع تحمل هذه ، أعتقد أنه سيكون من المفيد تقليل كمية التعليمات البرمجية التي تكتبها.
شكرا
كان لدي بعض الأسئلة حول استخدام واجهة برمجة تطبيقات OneDrive هذه المرة، لذلك طرحت سؤالا.