Udostępnij za pośrednictwem


Jak wywołać podrzędny internetowy interfejs API z poziomu aplikacji demona

Aplikacje demona platformy .NET mogą wywoływać internetowy interfejs API. Aplikacje demona platformy .NET mogą również wywoływać kilka wstępnie zatwierdzonych internetowych interfejsów API.

Wywoływanie internetowego interfejsu API z aplikacji demona

Poniżej przedstawiono sposób wywoływania interfejsu API przy użyciu tokenu:

Microsoft.Identity.Web oddziela złożoność MSAL.NET. Udostępnia on interfejsy API wyższego poziomu obsługujące wewnętrzne MSAL.NET, takie jak przetwarzanie błędów dostępu warunkowego, buforowanie.

Oto Program.cs aplikacji demona wywołującej podrzędny interfejs API:

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

Oto Program.cs aplikacji demona, która wywołuje program 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}"); }

Wywoływanie kilku interfejsów API

W przypadku aplikacji demona internetowe interfejsy API, które wywołujesz, muszą zostać wstępnie zatwierdzone. Nie ma przyrostowej zgody dla aplikacji demona. (Nie ma interakcji z użytkownikiem). Administrator dzierżawy musi wcześniej wyrazić zgodę na aplikację i wszystkie uprawnienia interfejsu API. Jeśli chcesz wywołać kilka interfejsów API, uzyskaj token dla każdego zasobu przy każdym wywołaniu metody AcquireTokenForClient. Biblioteka MSAL używa pamięci podręcznej tokenów aplikacji, aby uniknąć niepotrzebnych wywołań usługi.

Następne kroki

  • Dowiedz się więcej, tworząc aplikację jednostronicową React (SPA), która loguje użytkowników w poniższej serii samouczków wieloczęściowych.

  • Eksplorowanie przykładów kodu usługi Platforma tożsamości Microsoft/demona