2016-09-11 33 views
3

我需要從SharePoint Online頁面調用GRAPH API。有人可以分享一個JavaScript例子嗎? GRAPH網站中提供的示例用於從SharePoint Online外部調用GRAPH API。如何在SharePoint Online內調用Microsoft GRAPH API頁面

我知道每個請求都需要一個令牌,並且您必須登錄才能獲取該令牌。但是,如果我從SharePoint Online中調用GRAPH API,則表示我已經通過身份驗證,因此再次登錄無效。令牌應該在某處可用,並且我不知道如何獲取它(它在SharePoint Online URL中不可用)。

回答

2

Microsoft Graph受Azure AD保護,它支持使用OAuth檢索訪問令牌來調用它。

據我所知,SharePoint的令牌頒發者與Microsoft Graph不同。

的SharePoint:

在低信任授權系統,發行人是Azure的ACS和它的GUID是00000001-0000-0000-c000-000000000000。其格式爲GUID @ SharePoint領域GUID。

Microsoft Graph:

發行者是來自用戶租戶的安全令牌服務。其格式與https://sts.windows.net/049bef5f-8841-4000-984b-c3f36bdb2d8c/相似。

基於我的理解,它無法直接在SharePoint在線頁面中請求Microsoft Graph。作爲解決方法,您可以使用客戶端證書構建Web服務,該流程不需要用戶參與Microsoft Graph的服務代理的身份驗證。

或者如果您希望Microsoft Graph支持此功能,您可以提交here的反饋。

0

你是對的。如果您已經登錄到SharePoint,則不需要再次傳遞安全性。您可以調用Search API並向查詢添加一些屬性以訪問Office Graph數據。

https://msdn.microsoft.com/en-us/office/office365/howto/query-office-graph-using-gql-with-search-rest-api

這裏是我今天使用的例子(沒有空格 - 反斜線需要傳遞的,所以逃脫字符是很重要的):

/_api/search/query?QueryText='*' 
&Properties='GraphQuery:ACTOR(ME\,action\:1021)' 
&RowLimit=5 
&SelectProperties='URL,Title,ModifiedOWSDate,ModifiedBy,ContentType' 
&sortlist='created:1' 

這將返回在個人飼料項目的用戶登錄(與Delve相同)。

希望有幫助!

更新:

這已被棄用。 https://msdn.microsoft.com/en-us/office/office365/howto/query-office-graph-using-gql-with-search-rest-api

+1

SharePoint Search API僅允許訪問Office圖表(顯示用戶和對象之間的節點和連接),而不是新的統一的Microsoft Graph API(Microsoft的可怕命名)。 –

+0

現在返回一個錯誤代碼,當前O365的API被棄用 – nmishr

+0

@nmishr添加鏈接 –

1

註冊供應商託管的SharePoint應用程序/加載項時,此應用程序使用ACS作爲令牌服務器。 Microsoft Graph使用較新的AAD STS服務器。 要從SharePoint頁面調用Microsoft Graph,您需要註冊一個可調用Microsoft Graph的應用程序。 Microsoft Graph支持CORS,您可以從SharePoint頁面執行XHR。 由於SSO,運行時用戶不需要再次登錄。但是在代碼中,您需要處理獲取兩個訪問令牌的權限,一個來自ACS,用於調用CSOM API,另一個來自較新的STS來獲取Microsoft Graph的令牌。

+1

對於您建議的方法是否有很好的參考?我能找到的最好的特定於圖形的文檔說,用戶將被重定向到一個頁面,該頁面將要求用戶登錄到Office 365。最好的SP特定文檔警告頻繁用戶登錄https://msdn.microsoft.com/ en-us/office/office365/howto/create-web-apps-using-cors-to-access-files-in-office-365關於使用此方法頻繁登錄的警告https://dev.office.com/ sharepoint/docs/spfx/web-parts/guidance/call-microsoft-graph-from-your-web-part似乎GraphHttpClient在通常可用時將是更好的解決方案。 –

1

有一個新的類GraphHttpClient,它處於預覽狀態,並允許從SharePoint Framework Web部件有限訪問Microsoft Graph。

Mikael Svenson有a great explanation of the new class,包括Web部件的示例代碼。

相關問題