GraphHttpClient概述
部落格地址:http://blog.csdn.net/FoxDave
目前這個東西還在預覽階段,所以不推薦在正式生產環境中使用。
我們可以使用Microsoft Graph介面來構建強大的解決方案來訪問Office 365和其他微軟服務的資料。為了使SPFx的解決方案能夠連線到Microsoft Graph,你需要註冊一個Azure AD應用程式並完成授權流。為了簡化這個過程,GraphHttpClient出現了,通過使用它,你可以直接呼叫Microsoft Graph介面而不需要其他額外的設定。
GraphHttpClient類是什麼?
GraphHttpClient類作為SharePoint Framework的一部分包含在其中。它的工作方式跟HttpClient類似,你可以使用它來跟第三方應用程式介面通訊。該類會自動確保你對Microsoft Graph的請求擁有有效的訪問令牌和必須的請求頭。當你發出一個GET或POST請求時,GraphHttpClient會驗證它是否擁有一個有效的訪問令牌,如果沒有它將會從內部API獲取一個並儲存下來用於接下來的請求。
下面的程式碼演示了使用GraphHttpClient類訪問Microsoft Graph介面。
// ...
import { GraphHttpClient, GraphClientResponse } from '@microsoft/sp-http';
export default class MyApplicationCustomizer
extends BaseApplicationCustomizer<IMyApplicationCustomizerProperties> {
// ...
@override
public onRender(): void {
this.context.graphHttpClient.get("v1.0/groups?$select=displayName", GraphHttpClient.configurations.v1)
.then((response: GraphClientResponse): Promise<any> => {
return response.json();
})
.then((data: any): void => {
// ...
});
}
}
向Microsoft傳送請求,需要以下幾個步驟:
1. 從@microsoft/sp-http包引入GraphHttpClient和GraphClientResponse模組。
2. 使用this.context.graphHttpClient屬性作為該類的例項來傳送請求道Microsoft Graph。
3. 指定想要呼叫的Microsoft Graph API(從版本開始,不帶前面的斜槓/)。
4. 你還可以指定額外的請求頭,這些會跟GraphHttpClient設定的預設頭進行合併。
使用GraphHttpClient類需要考慮的事情
GraphHttpClient類提取了授權流和訪問令牌的管理,使得訪問Microsoft Graph更加便捷。由於現在正處於開發預覽版,在使用它的過程中你需要注意以下一些事情。
僅用來訪問Microsoft Graph介面
使用GraphHttpClient類僅能訪問Microsoft Graph。URL必須如前所述指定為以Microsoft Graph API版本開頭,加上API操作的URL,任何不符合此條件的URL都會返回一個錯誤。
許可權
GraphHttpClient使用Office 365 SharePoint Online的Azure AD應用程式來獲取有效的訪問令牌,該令牌代表當前使用者。獲取來的訪問令牌有兩個許可權:讀寫所有組(Group.ReadWrite.All)和讀取所有使用率報告(Reports.Read.All)。
注意僅有這兩個許可權,因此如果你需要其他的許可權,你就需要使用ADAL JS with implicit OAuth flow來代替它。
訪問令牌通過內部API獲得
GraphHttpClient通過發起一個web請求到/_api/SP.OAuth.Token/Acquire端點來獲得有效的訪問令牌。對外是不公開的,也就是說你是無法在你的解決方案中直接與它通訊的。
相關文章
- 使用GraphHttpClient呼叫Microsoft Graph介面 - GETHTTPclientROS
- 使用GraphHttpClient呼叫Microsoft Graph介面 - PATCHHTTPclientROS
- 使用GraphHttpClient呼叫Microsoft Graph介面 - POSTHTTPclientROS
- 概述
- JVM 概述JVM
- Java 概述Java
- mongodb 概述MongoDB
- Java概述Java
- TCP 概述TCP
- CloudHub概述Cloud
- ElasticSearch 概述Elasticsearch
- SparkSQL 概述SparkSQL
- Kafka 概述Kafka
- JDBC概述JDBC
- Promise 概述Promise
- FastDFS概述AST
- html概述HTML
- SurfaceView概述View
- uoj概述
- (1)概述
- DevOps概述dev
- Express 新手概述Express
- Android概述Android
- Redis Ziplist 概述Redis
- JavaScript物件概述JavaScript物件
- Docker 前沿概述Docker
- Web Storage概述Web
- 【Docker】Docker概述Docker
- Java 集合概述Java
- 9.3 parity概述
- HTTPS概述HTTP
- JVM的概述JVM
- Redis的概述Redis
- XMLHttpRequest 物件概述XMLHTTP物件
- DTD – 元素概述
- XML 元素概述XML
- java集合概述Java
- OkHttp的概述HTTP