Udostępnij za pośrednictwem


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

Dotyczy: Dzierżawcy siły roboczej Biały okrąg z szarym symbolem X. dzierżawcy zewnętrzni (White circle with a gray X symbol.dowiedz się więcej)

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 webowego interfejsu API z aplikacji demona

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

Microsoft.Identity.Web upraszcza złożoność MSAL.NET. Udziela interfejsów API wyższego poziomu, które obsługują aspekty wewnętrzne MSAL.NET, takie jak przetwarzanie błędów związanych z dostępem warunkowym i 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 plik Program.cs z aplikacji demona, która wywołuje usługę 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 webowe interfejsy API, które wywołujesz, muszą zostać wstępnie zatwierdzone. Nie ma stopniowej zgody dla aplikacji działających w tle. (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/demon na platformie tożsamości Microsoft