Share via


如何從精靈應用程式呼叫下游 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 會使用應用程式令牌快取來避免不必要的服務呼叫。

下一步

請移至此案例中的下一篇文章, 移至生產環境