Odbieranie zdarzeń zmiany interfejsu API programu Microsoft Graph za pośrednictwem usługi Azure Event Grid
W tym artykule opisano kroki subskrybowania zdarzeń publikowanych przez interfejs API programu Microsoft Graph. W poniższej tabeli wymieniono źródła zdarzeń, dla których zdarzenia są dostępne za pośrednictwem interfejsu API programu Graph. W przypadku większości zasobów obsługiwane są zdarzenia ogłaszające tworzenie, aktualizowanie i usuwanie. Aby uzyskać szczegółowe informacje o zasobach, dla których zdarzenia są zgłaszane dla źródeł zdarzeń, zobacz obsługiwane zasoby za pomocą powiadomień o zmianie interfejsu API programu Microsoft Graph.
Źródło zdarzeń firmy Microsoft | Zasoby | Dostępne typy zdarzeń |
---|---|---|
Microsoft Entra ID | Użytkownik, grupa | Typy zdarzeń entra firmy Microsoft |
Microsoft Outlook | Wydarzenie (spotkanie kalendarza), Wiadomość (wiadomość e-mail), Kontakt | Typy zdarzeń programu Microsoft Outlook |
Microsoft Teams | ChatMessage, CallRecord (spotkanie) | Typy zdarzeń usługi Microsoft Teams |
OneDrive | DriveItem | Zdarzenia usługi Microsoft OneDrive |
Microsoft SharePoint | Lista | Zdarzenia programu Microsoft SharePoint |
Do wykonania | Zadanie do wykonania | Zdarzenia zadań do wykonania firmy Microsoft |
Alerty zabezpieczeń | Alert | Zdarzenia alertu zabezpieczeń firmy Microsoft |
Drukowanie w chmurze | Drukarka, Drukuj definicję zadania | Zdarzenia drukowania w chmurze firmy Microsoft |
Konwersacje firmy Microsoft | Konwersacja | Zdarzenia konwersacji grupowej platformy Microsoft 365 |
Utworzysz subskrypcję interfejsu API programu Microsoft Graph, aby umożliwić przepływ zdarzeń interfejsu API programu Graph do tematu partnera. Temat partnera jest tworzony automatycznie w ramach tworzenia subskrypcji interfejsu API programu Graph. Ten temat partnera służy do tworzenia subskrypcji zdarzeń w celu wysyłania zdarzeń do dowolnego z obsługiwanych programów obsługi zdarzeń, które najlepiej spełniają wymagania dotyczące przetwarzania zdarzeń.
Ważne
Jeśli nie znasz funkcji Zdarzenia partnerskie, zobacz Omówienie zdarzeń partnerskich.
Dlaczego należy subskrybować zdarzenia ze źródeł interfejsu API programu Microsoft Graph za pośrednictwem usługi Event Grid?
Oprócz możliwości subskrybowania zdarzeń interfejsu API programu Microsoft Graph za pośrednictwem usługi Event Grid dostępne są inne opcje , za pomocą których można otrzymywać podobne powiadomienia (a nie zdarzenia). Rozważ użycie interfejsu API programu Microsoft Graph do dostarczania zdarzeń do usługi Event Grid, jeśli masz co najmniej jedno z następujących wymagań:
- Opracowujesz rozwiązanie sterowane zdarzeniami, które wymaga zdarzeń z identyfikatora Entra firmy Microsoft, programu Outlook, aplikacji Teams itp., aby reagować na zmiany zasobów. Potrzebujesz niezawodnego modelu opartego na zdarzeniach i możliwości publikowania subskrypcji oferowanych przez usługę Event Grid. Aby zapoznać się z omówieniem usługi Event Grid, zobacz Pojęcia dotyczące usługi Event Grid.
- Chcesz użyć usługi Event Grid do kierowania zdarzeń do wielu miejsc docelowych przy użyciu jednej subskrypcji interfejsu API programu Graph i chcesz uniknąć zarządzania wieloma subskrypcjami interfejsu API programu Graph.
- Należy kierować zdarzenia do różnych aplikacji podrzędnych, elementów webhook lub usług platformy Azure w zależności od niektórych właściwości zdarzenia. Na przykład możesz chcieć kierować typy zdarzeń, takie jak
Microsoft.Graph.UserCreated
iMicrosoft.Graph.UserDeleted
do wyspecjalizowanej aplikacji, która przetwarza dołączanie i odłączanie użytkowników. Możesz również wysłaćMicrosoft.Graph.UserUpdated
zdarzenia do innej aplikacji, która synchronizuje informacje o kontaktach, na przykład. Można to osiągnąć przy użyciu pojedynczej subskrypcji interfejsu API programu Graph podczas korzystania z usługi Event Grid jako miejsca docelowego powiadomień. Aby uzyskać więcej informacji, zobacz filtrowanie zdarzeń i procedury obsługi zdarzeń. - Współdziałanie jest dla Ciebie ważne. Chcesz przekazywać zdarzenia i obsługiwać je w standardowy sposób przy użyciu standardu specyfikacji Cloud Native Computing Foundation (CNCF) CloudEvents .
- Podoba Ci się obsługa rozszerzalności zapewniana przez usługę CloudEvents. Jeśli na przykład chcesz śledzić zdarzenia w zgodnych systemach, użyj rozszerzenia CloudEvents Distributed Tracing. Dowiedz się więcej o rozszerzeniach CloudEvents.
- Chcesz użyć sprawdzonych podejść opartych na zdarzeniach przyjętych przez branżę.
Włączanie zdarzeń interfejsu API programu Graph w celu przepływu do tematu partnera
Poprosisz interfejs API programu Microsoft Graph o przekazywanie zdarzeń do tematu partnera usługi Event Grid, tworząc subskrypcję interfejsu API programu Graph przy użyciu zestawów SDK (Software Development Kit) interfejsu API programu Microsoft Graph i wykonując kroki opisane w linkach do przykładów podanych w tej sekcji. Zobacz Obsługiwane języki dla zestawu SDK interfejsu API programu Microsoft Graph, aby uzyskać dostępną obsługę zestawu SDK.
Ogólne wymagania wstępne
Przed wdrożeniem aplikacji w celu utworzenia i odnowienia subskrypcji interfejsu API programu Microsoft Graph należy spełnić te ogólne wymagania wstępne:
Zapoznaj się z ogólnymi krokami subskrybowania zdarzeń partnerskich. Zgodnie z opisem w tym artykule przed utworzeniem subskrypcji interfejsu API programu Graph należy postępować zgodnie z instrukcjami podanymi w temacie:
Zarejestruj dostawcę zasobów usługi Event Grid w ramach subskrypcji platformy Azure.
Autoryzowanie interfejsu API programu Microsoft Graph (partnera) w celu utworzenia tematu partnera w grupie zasobów.
Masz działającą wiedzę na temat powiadomień interfejsu API programu Microsoft Graph. W ramach nauki możesz użyć Eksploratora interfejsu API programu Graph do tworzenia subskrypcji interfejsu API programu Graph.
Omówienie pojęć związanych ze zdarzeniami partnerskimi.
Zidentyfikuj zasób interfejsu API programu Microsoft Graph, z którego chcesz otrzymywać zdarzenia zmiany stanu systemu. Aby uzyskać więcej informacji, zobacz Powiadomienia o zmianie interfejsu API programu Microsoft Graph. Na przykład w celu śledzenia zmian użytkowników w identyfikatorze Entra firmy Microsoft należy użyć zasobu użytkownika . Użyj grupy do śledzenia zmian w grupach użytkowników.
Posiadanie konta administratora dzierżawy w dzierżawie platformy Microsoft 365. Możesz bezpłatnie uzyskać dzierżawę deweloperów, dołączając do programu deweloperów platformy Microsoft 365.
Inne wymagania wstępne specyficzne dla wybranego języka programowania i środowiska programistycznego używanego w linkach przykładów interfejsu API programu Microsoft Graph można znaleźć w poniższej sekcji.
Ważne
Szczegółowe instrukcje implementacji aplikacji znajdują się w sekcjach przykładów ze szczegółowymi instrukcjami , ale należy przeczytać wszystkie sekcje tego artykułu, ponieważ zawierają dodatkowe, ważne informacje dotyczące przekazywania zdarzeń interfejsu API programu Microsoft Graph przy użyciu usługi Event Grid.
Jak utworzyć subskrypcję interfejsu API programu Microsoft Graph
Podczas tworzenia subskrypcji interfejsu API programu Graph zostanie utworzony temat partnera. Aby określić temat partnera, który ma zostać utworzony i skojarzony z nową subskrypcją interfejsu API programu Graph, należy przekazać następujące informacje w elemencie notificationUrl parametrów:
- nazwa tematu partnera
- nazwa grupy zasobów, w której jest tworzony temat partnera
- region (lokalizacja)
- Subskrypcja platformy Azure
Te przykłady kodu pokazują, jak utworzyć subskrypcję interfejsu API programu Graph. Przedstawiają przykłady tworzenia subskrypcji w celu odbierania zdarzeń od wszystkich użytkowników w dzierżawie identyfikatora Entra firmy Microsoft podczas ich tworzenia, aktualizowania lub usuwania.
POST https://graph.microsoft.com/v1.0/subscriptions
Content-type: application/json
{
"changeType": "Updated,Deleted,Created",
"notificationUrl": "EventGrid:?azuresubscriptionid=8A8A8A8A-4B4B-4C4C-4D4D-12E12E12E12E&resourcegroup=yourResourceGroup&partnertopic=yourPartnerTopic&location=theNameOfAzureRegionFortheTopic",
"lifecycleNotificationUrl": "EventGrid:?azuresubscriptionid=8A8A8A8A-4B4B-4C4C-4D4D-12E12E12E12E&resourcegroup=yourResourceGroup&partnertopic=yourPartnerTopic&location=theNameOfAzureRegionFortheTopic",
"resource": "users",
"expirationDateTime": "2024-03-31T00:00:00Z",
"clientState": "secretClientValue"
}
changeType
: rodzaj zmian zasobów, dla których chcesz odbierać zdarzenia. Prawidłowe wartości:Updated
,Deleted
iCreated
. Można określić jedną lub więcej z tych wartości rozdzielonych przecinkami.notificationUrl
: identyfikator URI używany do definiowania tematu partnera, do którego są wysyłane zdarzenia. Musi być zgodny z następującym wzorcem:EventGrid:?azuresubscriptionid=<you-azure-subscription-id>&resourcegroup=<your-resource-group-name>&partnertopic=<the-name-for-your-partner-topic>&location=<the-Azure-region-name-where-you-want-the-topic-created>
. Lokalizację (znaną również jako region świadczenia usługi Azure)name
można uzyskać, wykonując polecenie az account list-locations . Nie używaj nazwy wyświetlanej lokalizacji. Na przykład nie używaj zachodnich środkowych stanów USA. Użycie w zamian parametruwestcentralus
.az account list-locations
lifecycleNotificationUrl
: identyfikator URI używany do definiowania tematu partnera, do któregomicrosoft.graph.subscriptionReauthorizationRequired
są wysyłane zdarzenia. To zdarzenie sygnalizuje, że subskrypcja interfejsu API programu Graph wkrótce wygaśnie. Identyfikator URI jest zgodny z tym samym wzorcem co element notificationUrl opisany wcześniej, jeśli używasz usługi Event Grid jako miejsca docelowego do zdarzeń cyklu życia. W takim przypadku temat partnera powinien być taki sam jak temat określony w elemencie notificationUrl.- resource: zasób, który generuje zdarzenia, które ogłaszają zmiany stanu.
- expirationDateTime: czas wygaśnięcia subskrypcji i zatrzymanie przepływu zdarzeń. Musi być zgodny z formatem określonym w żądaniu zmiany (RFC) 3339. Musisz określić czas wygaśnięcia, który mieści się w zakresie maksymalnej długości subskrypcji dozwolonej dla typu zasobu.
- stan klienta. Ta właściwość jest opcjonalna. Służy do weryfikacji wywołań aplikacji obsługi zdarzeń podczas dostarczania zdarzeń. Aby uzyskać więcej informacji, zobacz Właściwości subskrypcji interfejsu API programu Graph.
Ważne
Nazwa tematu partnera musi być unikatowa w tym samym regionie świadczenia usługi Azure. Każda kombinacja identyfikatora aplikacji dzierżawy może tworzyć maksymalnie 10 unikatowych tematów partnerów.
Podczas opracowywania rozwiązania należy pamiętać o pewnych limitach usługi interfejsu API programu Graph.
Istniejące subskrypcje interfejsu API programu Graph bez
lifecycleNotificationUrl
właściwości nie odbierają zdarzeń cyklu życia. Aby dodać właściwość lifecycleNotificationUrl, należy usunąć istniejącą subskrypcję i utworzyć nową subskrypcję określającą właściwość podczas tworzenia subskrypcji.
Po utworzeniu subskrypcji interfejsu API programu Graph masz temat partnera utworzony na platformie Azure.
Odnawianie subskrypcji interfejsu API programu Microsoft Graph
Aplikacja musi odnowić subskrypcję interfejsu API programu Graph przed wygaśnięciem, aby uniknąć zatrzymania przepływu zdarzeń. Aby ułatwić automatyzację procesu odnawiania, interfejs API programu Microsoft Graph obsługuje zdarzenia powiadomień cyklu życia, do których aplikacja może subskrybować. Obecnie wszystkie typy zasobów interfejsu API programu Microsoft Graph obsługują microsoft.graph.subscriptionReauthorizationRequired
element , który jest wysyłany, gdy wystąpi dowolny z następujących warunków:
- Token dostępu wkrótce wygaśnie.
- Subskrypcja interfejsu API programu Graph wkrótce wygaśnie.
- Administrator dzierżawy odwołał uprawnienia aplikacji do odczytu zasobu.
Jeśli subskrypcja interfejsu API programu Graph nie zostanie odnowiona po wygaśnięciu, musisz utworzyć nową subskrypcję interfejsu API programu Graph. Możesz odwołać się do tego samego tematu partnera, który był używany w wygasłej subskrypcji, o ile wygasł przez mniej niż 30 dni. Jeśli subskrypcja interfejsu API programu Graph wygasła przez ponad 30 dni, nie możesz ponownie użyć istniejącego tematu partnera. W takim przypadku należy określić inną nazwę tematu partnera. Alternatywnie możesz usunąć istniejący temat partnera, aby utworzyć nowy temat partnera o tej samej nazwie podczas tworzenia subskrypcji interfejsu API programu Graph.
Jak odnowić subskrypcję interfejsu API programu Microsoft Graph
Po otrzymaniu microsoft.graph.subscriptionReauthorizationRequired
zdarzenia aplikacja powinna odnowić subskrypcję interfejsu API programu Graph, wykonując następujące akcje:
Jeśli wpis tajny klienta został podany we właściwości clientState podczas tworzenia subskrypcji interfejsu API programu Graph, klucz tajny klienta dołączony do zdarzenia. Sprawdź, czy wartość clientState zdarzenia jest zgodna z wartością użytą podczas tworzenia subskrypcji interfejsu API programu Graph.
Upewnij się, że aplikacja ma prawidłowy token dostępu, aby wykonać następny krok. Więcej informacji znajduje się w kolejnych przykładach z szczegółową sekcją instrukcji .
Wywołaj jeden z następujących dwóch interfejsów API. Jeśli wywołanie interfejsu API powiedzie się, przepływ powiadomień o zmianie zostanie wznowione.
Wywołaj
/reauthorize
akcję, aby ponownie uwierzytelnić subskrypcję bez rozszerzania daty wygaśnięcia.POST https://graph.microsoft.com/beta/subscriptions/{id}/reauthorize
Wykonaj regularną akcję "odnów", aby ponownie uwierzytelnić i odnowić subskrypcję w tym samym czasie.
PATCH https://graph.microsoft.com/beta/subscriptions/{id} Content-Type: application/json { "expirationDateTime": "2024-04-30T11:00:00.0000000Z" }
Odnawianie może zakończyć się niepowodzeniem, jeśli aplikacja nie ma już autoryzacji dostępu do zasobu. Może to być konieczne, aby aplikacja uzyskała nowy token dostępu, aby pomyślnie ponownie uwierzytelnić subskrypcję.
Wyzwania związane z autoryzacją nie zastępują potrzeby odnowienia subskrypcji przed jej wygaśnięciem. Cykle życia tokenów dostępu i wygasania subskrypcji nie są takie same. Token dostępu może wygasnąć przed subskrypcją. Ważne jest, aby przygotować się do regularnego ponownego uwierzytelniania punktu końcowego w celu odświeżenia tokenu dostępu. Ponowne uwierzytelnianie punktu końcowego nie odnawia subskrypcji. Jednak odnowienie subskrypcji również ponownie uwierzytelnia punkt końcowy.
Podczas odnawiania i/lub ponownego uwierzytelniania subskrypcji interfejsu API programu Graph ten sam temat partnera określony podczas tworzenia subskrypcji jest używany.
Podczas określania nowej daty wygaśnięciaDateTime musi to być co najmniej trzy godziny od bieżącego czasu. W przeciwnym razie aplikacja może odbierać microsoft.graph.subscriptionReauthorizationRequired
zdarzenia wkrótce po odnowieniu.
Przykłady dotyczące ponownego uwierzytelniania subskrypcji interfejsu API programu Graph przy użyciu dowolnego z obsługiwanych języków można znaleźć w temacie Żądanie ponownego uwierzytelniania subskrypcji.
Aby zapoznać się z przykładami dotyczącymi odnawiania i ponownego uwierzytelniania subskrypcji interfejsu API programu Graph przy użyciu dowolnego z obsługiwanych języków, zobacz żądanie aktualizacji subskrypcji.
Przykłady ze szczegółowymi instrukcjami
Dokumentacja interfejsu API programu Microsoft Graph zawiera przykłady kodu z instrukcjami:
- Skonfiguruj środowisko deweloperskie z określonymi instrukcjami zgodnie z używanym językiem. Instrukcje obejmują również sposób uzyskiwania dzierżawy platformy Microsoft 365 na potrzeby programowania.
- Tworzenie subskrypcji interfejsu API programu Graph. Aby odnowić subskrypcję, możesz wywołać interfejs API programu Graph przy użyciu fragmentów kodu w temacie Jak odnowić subskrypcję interfejsu API programu Graph.
- Uzyskiwanie tokenów uwierzytelniania w celu ich używania podczas wywoływania interfejsu API programu Microsoft Graph.
Uwaga
Istnieje możliwość utworzenia subskrypcji interfejsu API programu Graph przy użyciu Eksploratora interfejsu API programu Microsoft Graph. Nadal należy używać przykładów dla innych ważnych aspektów rozwiązania, takich jak uwierzytelnianie i odbieranie zdarzeń.
Przykłady aplikacji internetowych są dostępne dla następujących języków:
- Przykład języka C#. Jest to aktualny przykład, który zawiera sposób tworzenia i odnawiania subskrypcji interfejsu API programu Graph oraz przeprowadzi Cię przez niektóre kroki umożliwiające przepływ zdarzeń.
- Przykład języka Java
- Przykład środowiska NodeJS.
Ważne
Musisz aktywować temat partnera utworzony w ramach tworzenia subskrypcji interfejsu API programu Graph. Należy również utworzyć subskrypcję zdarzeń usługi Event Grid w aplikacji internetowej w celu odbierania zdarzeń. W tym celu użyjesz adresu URL skonfigurowanego w aplikacji internetowej do odbierania zdarzeń jako punktu końcowego elementu webhook w ramach subskrypcji zdarzeń. Następne kroki , aby uzyskać więcej informacji.
Ważne
Czy potrzebujesz przykładowego kodu dla innego języka lub masz pytania? Wyślij nam wiadomość e-mail na adres ask-graph-and-grid@microsoft.com.
Następne kroki
Postępuj zgodnie z instrukcjami w następujących dwóch krokach, aby ukończyć konfigurowanie w celu odbierania zdarzeń interfejsu API programu Microsoft Graph przy użyciu usługi Event Grid:
- Aktywuj temat partnera utworzony w ramach tworzenia interfejsu API programu Microsoft Graph.
- Subskrybowanie zdarzeń przez utworzenie subskrypcji zdarzeń do tematu partnera.
Inne przydatne linki:
- Azure Event Grid — omówienie zdarzeń partnerów
- Informacje na temat interfejsu API programu Microsoft Graph.
- Elementy webhook interfejsu API programu Microsoft Graph
- Najlepsze rozwiązania dotyczące pracy z interfejsem Microsoft Graph API
- Zestawy SDK interfejsu API programu Microsoft Graph
- Samouczki interfejsu API programu Microsoft Graph, które pokazują, jak używać interfejsu API programu Graph. Ten artykuł nie musi zawierać przykładów wysyłania zdarzeń do usługi Event Grid.