Cara memanggil API web hilir dari aplikasi daemon

Aplikasi daemon .NET dapat memanggil API web. Aplikasi daemon .NET juga dapat memanggil beberapa API web yang telah disetujui sebelumnya.

Memanggil API web dari aplikasi daemon

Berikut cara menggunakan token untuk memanggil API:

Microsoft.Identity.Web mengabstraksi kompleksitas MSAL.NET. Ini memberi Anda API tingkat yang lebih tinggi yang menangani internal MSAL.NET untuk Anda, seperti memproses kesalahan Akses Bersyar, penembolokan.

Berikut adalah Program.cs aplikasi daemon yang memanggil API hilir:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Identity.Abstractions;
using Microsoft.Identity.Web;

// In the Program.cs, acquire a token for your downstream API

var tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();
tokenAcquirerFactory.Services.AddDownstreamApi("MyApi",
    tokenAcquirerFactory.Configuration.GetSection("MyWebApi"));
var sp = tokenAcquirerFactory.Build();

var api = sp.GetRequiredService<IDownstreamApi>();
var result = await api.GetForAppAsync<IEnumerable<TodoItem>>("MyApi");
Console.WriteLine($"result = {result?.Count()}");

Berikut adalah Program.cs aplikasi daemon yang memanggil Microsoft Graph:

var tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();
tokenAcquirerFactory.Services.AddMicrosoftGraph();
var serviceProvider = tokenAcquirerFactory.Build();
try
{
    GraphServiceClient graphServiceClient = serviceProvider.GetRequiredService<GraphServiceClient>();
    var users = await graphServiceClient.Users
        .GetAsync(r => r.Options.WithAppOnly());
    Console.WriteLine($"{users.Count} users");
    Console.ReadKey();
}
catch (Exception ex) { Console.WriteLine("We could not retrieve the user's list: " + $"{ex}"); }

Memanggil beberapa API

Untuk aplikasi daemon, API web yang Anda panggil perlu disetujui sebelumnya. Tidak ada persetujuan bertahap dengan aplikasi daemon. (Tidak ada interaksi pengguna.) Admin penyewa perlu memberikan persetujuan sebelumnya untuk aplikasi dan semua izin API. Jika Anda ingin memanggil beberapa API, memperoleh token untuk semua sumber daya, setiap kali memanggil AcquireTokenForClient. MSAL menggunakan cache token aplikasi untuk menghindari panggilan layanan yang tidak perlu.

Langkah berikutnya

Beralih ke artikel berikutnya dalam skenario ini, Beralih ke produksi.