共用方式為


如何從精靈應用程式呼叫下游 Web API

.NET 精靈應用程式可呼叫 Web API。 .NET 精靈應用程式也可以呼叫數個預先核准的 Web API。

從精靈應用程式呼叫 Web API

以下說明如何使用權杖來呼叫 API:

Microsoft.Identity.Web 會抽象化 MSAL.NET 的複雜性。 提供您處理 MSAL.NET 內部的較高層級 API,例如處理條件式存取錯誤、快取。

以下是呼叫下游 API 之精靈應用程式的 Program.cs:

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()}");

以下是呼叫 Microsoft Graph 之精靈應用程式的 Program.cs:

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}"); }

呼叫數個 API

對於精靈應用程式,您呼叫的 Web API 需要預先核准。 精靈應用程式不會有累加式同意。 (不需要使用者互動。)租用戶管理員必須事先同意應用程式和所有 API 權限。 如果您想要呼叫數個 API,您在每次呼叫 AcquireTokenForClient 時都須取得每個資源的權杖。 MSAL 會使用應用程式權杖快取,以避免不必要的服務呼叫。

下一步