博客地址: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端点来获得有效的访问令牌。对外是不公开的,也就是说你是无法在你的解决方案中直接与它通信的。