擴展Microsoft Graph數據結構 - 架構擴展

前言

此前我有一篇 文章 講解了Microsoft Graph的一種數據擴展技術—— 開發擴展(Open Extensions),它能夠實如今支持的對象(例如用戶,組等)上面附加任意的數據。但開放擴展的問題在於,它是基於某個具體對象的,你沒法肯定兩個對象是否具備一樣的擴展(即使屬性名同樣,但也可能其包含的數據徹底不一樣)。若是咱們須要對一類對象進行統一的擴展,例如給組(Group)這個類型添加幾個特殊的屬性,此時就能夠用到架構擴展這個很是強大的技術。git

關於架構擴展,官方的文檔請參考 https://developer.microsoft.com/en-us/graph/docs/concepts/extensibility_schema_groupsgithub

支持的類型

目前支持進行架構擴展的Microsoft Graph類型有以下幾個瀏覽器

  1. contact
  2. device
  3. event on a user or Office 365 group calendar
  4. post of an Office 365 group
  5. group
  6. message
  7. organization
  8. user

權限要求

要註冊架構擴展,必須使用Office 365的企業或學校帳號管理員身份,並且必須申請 Directory.AccessAsUser.All 這個權限(僅支持委派權限)。目前不支持在Microsoft Graph Explorer中進行操做,因此本文爲了演示方便,已經註冊了一個Azure AD 應用程序,以下圖所示數據結構

同時,因爲Directory.AccessAsUser.All 這個權限是管理員權限,因此還必須執行「管理員確認(admin consent)」的過程,這個倒也不難,你能夠在瀏覽器中訪問以下的地址便可架構

https://login.microsoftonline.com/common/adminconsent?client_id=`87b53490-05d4-4bed-8335-b50ed8b56130`&state=`12345`&redirect_uri=`http://localhost`post

註冊架構擴展

註冊架構擴展的命令其實很簡單,若是你用REST API的話,參考下面的範例執行便可3d

這裏的關鍵屬性是id。目前支持兩種定義id的方式,若是你的Office 365 租戶中註冊了自定義域名(例如 contoso.com),那麼你能夠用 域名_擴展名 這樣的格式來定義id(上圖的例子就是這樣的),若是你沒有自定義域名,你能夠直接用 擴展名 這樣的格式,例如 myextension。但爲了進行區分,在你保存的時候,系統會自動地加上一個隨機的前綴,它的格式是ext+八位隨機字符_擴展名,例如extsjar451r_myextension。因此,前者要求略高一些,但對於後期使用更加方便一些;然後者由於id是隨機產生的,因此在使用過程會複雜一些。你能夠根據本身的實際狀況選擇。code

下圖是我在Postman中註冊一個新的架構擴展的效果對象

使用架構擴展數據

咱們已經擁有了一個新的架構擴展,接下來如何使用它呢?我一樣用Postman來演示建立一個新的Group對象,請注意,我除了提供標準的屬性外,還按照架構擴展的屬性定義提供了額外的信息。blog

你可能會發現,返回的結果中並無顯示出來咱們添加的擴展屬性。若是須要查詢這些額外的屬性,你須要使用select關鍵字來指定返回值,以下圖所示。

結語

這一篇文章經過一個實例演示了使用架構擴展的技術爲Microsoft Graph 的數據結構進行擴展,它跟開放擴展不一樣的地方在於,它能夠爲一類對象統一進行擴展,而不是針對單個對象,靈活地搭配使用這兩種技術,可讓你充分利用Microsoft Graph,而且爲其注入更多的數據,爲後續的集成提供更多的可能性。

相關文章
相關標籤/搜索