擴展Microsoft Graph數據結構 - 架構擴展
前言
此前我有一篇 文章 講解了Microsoft Graph的一種數據擴展技術—— 開發擴展(Open Extensions),它可以實現在支持的對象(例如用戶,組等)上面附加任意的數據。但開放擴展的問題在於,它是基於某個具體對象的,你無法確定兩個對象是否具有同樣的擴展(即便屬性名一樣,但也可能其包含的數據完全不同)。如果我們需要對一類對象進行統一的擴展,例如給組(Group)這個類型添加幾個特殊的屬性,此時就可以用到架構擴展
這個非常強大的技術。
關於架構擴展,官方的文檔請參考 https://developer.microsoft.com/en-us/graph/docs/concepts/extensibility_schema_groups。
支持的類型
目前支持進行架構擴展的Microsoft Graph類型有如下幾個
- contact
- device
- event on a user or Office 365 group calendar
- post of an Office 365 group
- group
- message
- organization
- 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
註冊架構擴展
註冊架構擴展的命令其實很簡單,如果你用REST API的話,參考下面的範例執行即可
這裏的關鍵屬性是id。目前支持兩種定義id的方式,如果你的Office 365 租戶中註冊了自定義域名(例如 contoso.com),那麽你可以用 域名_擴展名
擴展名
這樣的格式,例如 myextension
。但為了進行區分,在你保存的時候,系統會自動地加上一個隨機的前綴,它的格式是ext+八位隨機字符_擴展名
,例如extsjar451r_myextension
。所以,前者要求略高一些,但對於後期使用更加方便一些;而後者因為id是隨機產生的,所以在使用過程會復雜一些。你可以根據自己的實際情況選擇。下圖是我在Postman中註冊一個新的架構擴展的效果
使用架構擴展數據
我們已經擁有了一個新的架構擴展,接下來如何使用它呢?我同樣用Postman來演示創建一個新的Group對象,請註意,我除了提供標準的屬性外,還按照架構擴展的屬性定義提供了額外的信息。
你可能會發現,返回的結果中並沒有顯示出來我們添加的擴展屬性。如果需要查詢這些額外的屬性,你需要使用select關鍵字來指定返回值,如下圖所示。
結語
這一篇文章通過一個實例演示了使用架構擴展
的技術為Microsoft Graph 的數據結構進行擴展,它跟開放擴展
不同的地方在於,它可以為一類對象統一進行擴展,而不是針對單個對象,靈活地搭配使用這兩種技術,可以讓你充分利用Microsoft Graph,並且為其註入更多的數據,為後續的集成提供更多的可能性。
擴展Microsoft Graph數據結構 - 架構擴展