OneDrive API'sini toplu iş programı (.NET C# sürümü) gibi kullanıcı etkileşimi olmadan kullanın (Microsoft Graph kitaplığını kullanarak)

Sayfa güncel :
Sayfa oluşturma tarihi :

Çalışma ortamı

Görsel Stüdyo
  • Görsel Studio 2022
.NET
  • .NET 8
Microsoft Kimlik Doğrulama API'si
  • 2.0 OAuth 2
Microsoft OneDrive API'sı
  • 1.0
Microsoft.Graph
  • 5.54.0
Microsoft hesabı türleri
  • İş veya okul hesabı

Önkoşullar

Görsel Stüdyo
  • Sürümlerden biri
.NET
  • Sürümlerden biri
Microsoft Kimlik Doğrulama API'si
  • 2.0 OAuth 2
Microsoft OneDrive API'sı
  • 1.0
Microsoft.Graph
  • 5.XX
Microsoft hesabı türleri
  • İş veya okul hesabı

Bu ipucu hakkında

Bu İpucu, aşağıdaki İpuçlarına dayalı Microsoft Graph olarak kitaplığı kullanan değiştirilmiş bir programdır. Bu nedenle, Azure'a genel bakış ve işlem yordamı için lütfen aşağıdaki ipuçları yordamına bakın ve programı oluştururken bu ipucuna bakın.

önkoşul

  • Bir iş veya okul hesabı için Microsoft hesabınız var
  • Yukarıda listelenen Microsoft hesabıyla ilişkili OneDrive'ı kullanabilirsiniz (ör. OneDrive Business)
  • Visual Studio 2022 yüklendi
  • Yukarıdaki ipuçlarına başvurarak uygulamanızı Azure'a kaydettiniz ve kimlik gibi gerekli bilgileri edindiniz.

Konsol uygulaması oluşturma

Visual Studio'yu başlatın ve konsol uygulamanız için bir proje oluşturun. Visual Studio dışında oluşturabilirsiniz, ancak şimdilik Visual Studio'yu kullanacağım.

Konum ve proje adı isteğe bağlıdır. Bu durumda, proje adı .OneDriveApiDotNetClientCredentialsMicrosoftGraph

Microsoft.Graph İlk olarak, NuGet'ten ve Azure.Identity kitaplıklarını alın.

Bu sefer kodu bölmeyeceğiz, üstten Program.cs kademeli olarak yazacağız, bu yüzden hareketi kontrol edebiliyorsanız, lütfen kodu gerektiği gibi bölerek yeniden yazın.

using Azure.Identity;
using Microsoft.Graph;

Kullanmak istediğiniz ad alanını açıklayın.

// 各種 ID などの定義
var clientId = "XXXXXXXX";      // クライアント ID
var tenantId = "XXXXXXXX";      // テナント ID
var clientSecret = "XXXXXXXX";  // クライアント シークレット
var userId = "XXXXXXXX";        // ユーザー ID

Her biri için Azure'da elde edilen kimliği ayarlayın.

// 使いまわすので最初に定義しておく
HttpClient httpClient = new();

Belirtilen URL'ye bir istekte bulunmak için HttpClient bir tane oluşturdunuz.

// クライアント シークレットによる認証情報を定義
ClientSecretCredential clientSecretCredential = new(tenantId, clientId, clientSecret);

// HttpClient と認証情報で Microsoft Graph サービスのクライアントを生成
using GraphServiceClient graphClient = new(httpClient, clientSecretCredential);

Aldığınız kimliği kullanarak istemci gizli dizisini tanımlayın ve bu şekilde devam edin. Bu verileri bir örnek oluşturmak için HttpClient GraphServiceClient kullanabilirsiniz. Bu genellikle GraphServiceClient çeşitli API'lere erişmek için kullanılır.

// 対象ユーザーに紐づく OneDrive を取得 (紐づいているドライブが OneDrive 1つという前提)
var drive = await graphClient.Users[userId].Drive.GetAsync();
if (drive == null)
{
  Console.WriteLine("ドライブを取得できませんでした。");
  return;
}

GraphServiceClient OneDrive'ı önce kullanıcıyla ilişkilendirmek için. Bağlı birden fazla sürücünüz varsa, Drives hedef OneDrive'ı şuradan bulun ve alın: . OneDrive dışında bir sürücünün de bağlı olması mümkündür, ancak ben çok fazla kontrol etmedim. Yalnızca bir OneDrive'ın bağlı olduğundan eminseniz, Drive özelliklerde olduğu gibi alabilirsiniz.

// OneDrive のルートを取得
var root = await graphClient.Drives[drive.Id].Root.GetAsync();
if (root == null)
{
  Console.WriteLine("OneDrive のルートを取得できませんでした。");
  return;
}

OneDrive'a sahip olduğunuzda, ona özgürce erişebilirsiniz. Bir klasörün veya dosyanın kimliğini arıyorsanız, doğrudan belirtebilirsiniz. Her şeyden önce, hiçbir şeyi kontrol etmedim, bu yüzden kök klasörü alıyorum.

// ルート直下にあるフォルダ一覧取得
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}");
}

Kök klasöre sahip olduğunuzda, Children doğrudan altında dosya ve klasörlerin bir listesini alabilirsiniz. Bundan sonra, alınan değerleri numaralandırıyorum ve isimleri görüntülüyorum.

Özet

"Microsoft Graph" kütüphanesini kullanarak kod yazmaya çalıştım. API'nin URL'sine erişmeye kıyasla kod miktarını önemli ölçüde azaltabileceğinizi düşünüyorum.

Bununla birlikte, dezavantajlarının, kitaplığın farklı sürümlerinin kodda hataya neden olabilecek değişikliklere neden olabilmesi ve çok az belge olmasıdır. Eğer bunları tolere edebiliyorsanız yazdığınız kod miktarını azaltmanın daha avantajlı olacağını düşünüyorum.

teşekkürler

Bu sefer OneDrive API'sini kullanma hakkında bazı sorularım vardı, bu yüzden bir soru sordum.