前面一系列关于Microsoft Graph Toolkit的文章,我们介绍了如何使用这些组件,包括配置、自定义样式、模板化等,还介绍了使用mgt-get去调用Microsoft Graph和Providers相关的内容。
本篇内容是针对SharePoint开发人员的,我们将介绍如何使用Microsoft Graph Toolkit,利用之前介绍的内容去开发SPFx解决方案。
之前我们介绍过,如果我们要使用Microsoft Graph Toolkit去创建一个HTML的应用程序,大概有如下步骤:
本篇创建SPFx解决方案,我们将参照上面的步骤逐一说明。
当我们要调用Microsoft Graph时,通常需要在Microsoft Identity中注册一个应用程序。但是在构建SharePoint解决方案时,有一点小惊喜,我们不需要再去注册了,每一个解决方案包都会自动生成一个唯一标识,用来授予访问Microsoft Graph API的权限。
也就是说,如果要开发SPFx解决方案,我们在这里什么都不需要做。
之前介绍SPFx解决方案开发的时候介绍过,我们将使用Yeoman SharePoint生成器去创建全新的SharePoint解决方案。忘了的参考SharePoint Framework开发环境的配置。
这里我们将使用标准步骤去创建一个web部件项目:
md helloworld-mgt
cd helloworld-mgt
yo @microsoft/sharepoint
这样Yeoman就开始安装相关的依赖去创建项目了,在此稍候。
成功后会看到如下提示。
执行命令npm install @microsoft/rush-stack-compiler-3.7 --save-dev
以确保我们的项目具有TypeScript,如果已经安装了TypeScript则可以忽略。
用VS Code打开该项目,打开tsconfig.json文件,找到第一行的extends属性,修改为如下内容。
"extends": "./node_modules/@microsoft/rush-stack-compiler-3.7/includes/tsconfig-web.json",
接下来我们可以添加Microsoft Graph Toolkit了。
之前介绍过在HTML页面如果想要添加Microsoft Graph Toolkit,我们需要添加如下JavaScript引用代码。
<script src="https://unpkg.com/@microsoft/mgt/dist/bundle/mgt-loader.js"></script>
对于SPFx项目这里略有不同,它使用Node.js,因此我们需要通过npm包安装Microsoft Graph Toolkit。
npm install @microsoft/mgt
安装完之后就可以进行添加provider等后续工作了。
对于HTML页面,我们可以简单地通过如下代码添加一个MSAL provider用于Microsoft Graph的认证和访问。
<mgt-msal-provider client-id="[YOUR-CLIENT-ID]"></mgt-msal-provider>
对于SPFx项目来说,我们需要使用的是SharePoint provider,按如下步骤操作:
import { Providers, SharePointProvider } from ‘@microsoft/mgt’;
protected async onInit() {
Providers.globalProvider = new SharePointProvider(this.context);
}
到这里,准备工作就全部做完了,非常简单。
在HTML页面上时,通常情况下都是从匿名状态开始访问,因此我们需要添加登录组件来为用户提供一个登录的方式。
但是在SharePoint的web部件中,本来就是在认证的上下文中的,因此登录组件就没有存在的必要了。
我们可以将其他Microsoft Graph Toolkit的组件添加到我们的web部件。我们要做的仅仅是在render方法中编写我们需要的组件。
public render(): void {
this.domElement.innerHTML = `
`;
}
在使用web部件之前,我们需要声明需要的Microsoft Graph API权限,参照如下步骤:
“webApiPermissionRequests”: [
],
这里用来声明需要请求的权限,例如如果我们需要日程mgt-agenda这个组件,那么我们需要Calendars.Read这个权限,那么定义格式为:
"webApiPermissionRequests": [
{
"resource": "Microsoft Graph",
"scope": "Calendars.Read"
}
]
遵从最小权限的原则,建议尽量只声明需要的权限。
4. 编译解决方案,执行如下命令
gulp build
gulp bundle
gulp package-solution
在解决方案包部署时,会自动创建所需的权限请求,批准的步骤如下:
对于SPFx的解决方案我们需要在工作台测试,即workbench,地址为
https://[yourtenant].sharepoint.com/_layouts/15/workbench.aspx
完整的操作步骤如下:
“initialPage”: “https://[yourtenant].sharepoint.com/_layouts/15/workbench.aspx”,