उपयोगकर्ता सहभागिता, जैसे बैच प्रोग्राम (.NET C# संस्करण) (Microsoft ग्राफ़ लाइब्रेरी का उपयोग करके) के बिना OneDrive API का उपयोग करें
परिचालन का वातावरण
- विजुअल स्टूडियो
-
- विजुअल स्टूडियो 2022
- ।जाल
-
- .नेट 8
- Microsoft प्रमाणीकरण API
-
- 2.0 ओथ 2
- माइक्रोसॉफ्ट OneDrive API
-
- 1.0
- माइक्रोसॉफ्ट.ग्राफ
-
- 5.54.0
- Microsoft खातों के प्रकार
-
- कार्यस्थल या विद्यालय खाता
आवश्यकताएँ
- विजुअल स्टूडियो
-
- संस्करणों में से एक
- ।जाल
-
- संस्करणों में से एक
- Microsoft प्रमाणीकरण API
-
- 2.0 ओथ 2
- माइक्रोसॉफ्ट OneDrive API
-
- 1.0
- माइक्रोसॉफ्ट.ग्राफ
-
- 5.एक्सएक्स
- Microsoft खातों के प्रकार
-
- कार्यस्थल या विद्यालय खाता
इस टिप के बारे में
यह युक्ति निम्न युक्तियों के आधार पर Microsoft Graph
पुस्तकालय का उपयोग करके एक संशोधित प्रोग्राम है।
इसलिए, कृपया Azure पर ओवरव्यू और संचालन प्रक्रिया के लिए निम्न युक्तियाँ प्रक्रिया देखें, और प्रोग्राम बनाते समय इस टिप को देखें।
पूर्व शर्त
- आपके पास कार्यस्थल या विद्यालय खाते के लिए Microsoft खाता है
- आप ऊपर सूचीबद्ध Microsoft खाते से संबद्ध OneDrive का उपयोग कर सकते हैं (उदा., OneDrive Business)
- विजुअल स्टूडियो 2022 स्थापित
- आपने ऊपर दी गई युक्तियों का हवाला देकर Azure पर अपना ऐप पंजीकृत किया है और आईडी जैसी आवश्यक जानकारी प्राप्त की है।
कंसोल अनुप्रयोग बनाएँ
Visual Studio प्रारंभ करें, और अपने कंसोल अनुप्रयोग के लिए कोई प्रोजेक्ट बनाएँ। आप इसे विजुअल स्टूडियो के बाहर बना सकते हैं, लेकिन मैं अभी के लिए विजुअल स्टूडियो का उपयोग करूंगा।
स्थान और प्रोजेक्ट का नाम वैकल्पिक है. इस स्थिति में, प्रोजेक्ट का नाम है OneDriveApiDotNetClientCredentialsMicrosoftGraph
।
Microsoft.Graph
सबसे पहले, NuGet से और Azure.Identity
पुस्तकालय प्राप्त करें।
इस बार, हम कोड को विभाजित नहीं करेंगे, लेकिन 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 पर प्राप्त ID को प्रत्येक के लिए सेट करें.
// 使いまわすので最初に定義しておく
HttpClient httpClient = new();
आपने निर्दिष्ट URL के लिए अनुरोध करने के लिए HttpClient
एक जनरेट किया है।
// クライアント シークレットによる認証情報を定義
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 लिंक किया गया है, तो आप 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
तो आप सीधे इसके तहत फ़ाइलों और फ़ोल्डरों की एक सूची प्राप्त कर सकते हैं।
उसके बाद, मैं पुनर्प्राप्त मूल्यों की गणना करता हूं और नाम प्रदर्शित करता हूं।
सारांश
मैंने "माइक्रोसॉफ्ट ग्राफ" की लाइब्रेरी का उपयोग करके कोड लिखने की कोशिश की। मुझे लगता है कि आप एपीआई के यूआरएल तक पहुंचने की तुलना में कोड की मात्रा को काफी कम कर सकते हैं।
हालांकि, मुझे लगता है कि नुकसान यह है कि पुस्तकालय के विभिन्न संस्करण कोड में परिवर्तन को तोड़ने का कारण बन सकते हैं और थोड़ा दस्तावेज है। यदि आप इन्हें सहन कर सकते हैं, तो मुझे लगता है कि आपके द्वारा लिखे गए कोड की मात्रा को कम करना अधिक फायदेमंद होगा।
धन्यवाद
इस बार वनड्राइव एपीआई का उपयोग करने के बारे में मेरे कुछ प्रश्न थे, इसलिए मैंने एक प्रश्न पूछा।