Gunakan API OneDrive tanpa interaksi pengguna, seperti program batch (versi .NET C#) (menggunakan pustaka Microsoft Graph)
Lingkungan operasi
- Visual Studio
-
- Visual Studio 2022
- .JARING
-
- .NET 8
- API Autentikasi Microsoft
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.54.0
- Jenis akun Microsoft
-
- Akun kerja atau sekolah
Prasyarat
- Visual Studio
-
- Salah satu versi
- .JARING
-
- Salah satu versi
- API Autentikasi Microsoft
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- Jenis akun Microsoft
-
- Akun kerja atau sekolah
Tentang tip ini
Tips ini adalah program yang dimodifikasi menggunakan library berdasarkan Microsoft Graph
Tips berikut.
Oleh karena itu, silakan lihat prosedur tips berikut untuk gambaran umum dan prosedur operasi di Azure, dan lihat tip ini saat Anda membangun program.
Prasyarat
- Anda memiliki akun Microsoft untuk akun kerja atau sekolah
- Anda dapat menggunakan OneDrive yang terkait dengan akun Microsoft yang tercantum di atas (misalnya, OneDrive Business)
- Visual Studio 2022 diinstal
- Anda telah mendaftarkan aplikasi Anda di Azure dengan mengacu pada tips di atas dan memperoleh informasi yang diperlukan seperti ID.
Membuat aplikasi konsol
Mulai Visual Studio dan buat proyek untuk aplikasi konsol Anda. Anda dapat membuatnya di luar Visual Studio, tetapi saya akan menggunakan Visual Studio untuk saat ini.
Lokasi dan nama proyek bersifat opsional. Dalam hal ini, nama proyeknya adalah OneDriveApiDotNetClientCredentialsMicrosoftGraph
.
Microsoft.Graph
Pertama, dapatkan dan Azure.Identity
library dari NuGet.
Kali ini, kami tidak akan membagi kode, tetapi Program.cs
akan menulisnya secara terhuyung-huyung dari atas, jadi jika Anda dapat memeriksa gerakannya, silakan tulis ulang dengan membagi kode seperlunya.
using Azure.Identity;
using Microsoft.Graph;
Jelaskan namespace yang ingin Anda gunakan.
// 各種 ID などの定義
var clientId = "XXXXXXXX"; // クライアント ID
var tenantId = "XXXXXXXX"; // テナント ID
var clientSecret = "XXXXXXXX"; // クライアント シークレット
var userId = "XXXXXXXX"; // ユーザー ID
Atur ID yang diperoleh di Azure untuk masing-masing.
// 使いまわすので最初に定義しておく
HttpClient httpClient = new();
Anda telah membuat a untuk membuat permintaan ke HttpClient
URL yang ditentukan.
// クライアント シークレットによる認証情報を定義
ClientSecretCredential clientSecretCredential = new(tenantId, clientId, clientSecret);
// HttpClient と認証情報で Microsoft Graph サービスのクライアントを生成
using GraphServiceClient graphClient = new(httpClient, clientSecretCredential);
Tentukan rahasia klien menggunakan ID yang Anda peroleh, dan seterusnya.
Anda dapat menggunakan data tersebut untuk HttpClient
GraphServiceClient
membuat instance .
Ini GraphServiceClient
sering digunakan untuk mengakses berbagai API.
// 対象ユーザーに紐づく OneDrive を取得 (紐づいているドライブが OneDrive 1つという前提)
var drive = await graphClient.Users[userId].Drive.GetAsync();
if (drive == null)
{
Console.WriteLine("ドライブを取得できませんでした。");
return;
}
GraphServiceClient
untuk mendapatkan OneDrive yang terkait dengan pengguna terlebih dahulu.
Jika Anda memiliki beberapa drive yang ditautkan, Drives
temukan dan ambil OneDrive target dari .
Ada kemungkinan bahwa drive selain OneDrive juga ditautkan, tetapi saya belum banyak memeriksanya.
Jika Anda yakin bahwa hanya satu OneDrive yang ditautkan, Anda Drive
bisa mendapatkannya apa adanya di properti.
// OneDrive のルートを取得
var root = await graphClient.Drives[drive.Id].Root.GetAsync();
if (root == null)
{
Console.WriteLine("OneDrive のルートを取得できませんでした。");
return;
}
Setelah Anda memiliki OneDrive, Anda dapat mengaksesnya dengan bebas. Jika Anda mencari ID folder atau file, Anda dapat menentukannya secara langsung. Pertama-tama, saya belum memeriksa apa pun, jadi saya mendapatkan folder root.
// ルート直下にあるフォルダ一覧取得
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}");
}
Setelah Anda memiliki folder root, Children
Anda bisa mendapatkan daftar file dan folder langsung di bawahnya.
Setelah itu, saya menghitung nilai yang diambil dan menampilkan nama.
Ringkasan
Saya mencoba menulis kode menggunakan pustaka "Microsoft Graph". Saya pikir Anda dapat mengurangi jumlah kode secara signifikan dibandingkan dengan mengakses URL API.
Namun, saya pikir kerugiannya adalah bahwa versi pustaka yang berbeda dapat menyebabkan perubahan yang merusak pada kode dan hanya ada sedikit dokumentasi. Jika Anda dapat mentolerir ini, saya pikir akan lebih menguntungkan untuk mengurangi jumlah kode yang Anda tulis.
Terima kasih
Saya memiliki beberapa pertanyaan tentang penggunaan API OneDrive kali ini, jadi saya mengajukan pertanyaan.