升级到最新版本的 Microsoft Graph 工具包
本文汇总了 Microsoft Graph 工具包版本中引入的中断性变更,以及这些更改可能对解决方案产生的影响。
Microsoft Graph 工具包 v4.0 放弃了对 ES5 的支持,并使用 mgt-loader
作为通过 CDN 在应用程序中导入工具包的方式。 如果使用 mgt-loader
,则必须更改代码才能导入模块。
以下代码:
<script src="https://unpkg.com/@microsoft/mgt@3/dist/bundle/mgt-loader.js"></script>
<mgt-msal2-provider client-id="[CLIENT-ID]"></mgt-msal2-provider>
<mgt-login></mgt-login>
变为以下内容:
<script type="module">
import { registerMgtComponents, Providers, Msal2Provider } from 'https://unpkg.com/@microsoft/mgt@4';
Providers.globalProvider = new Msal2Provider({clientId: '[CLIENT-ID]'});
registerMgtComponents();
</script>
<mgt-login></mgt-login>
Microsoft Graph 工具包 v4.0 删除@microsoft/mgt-spfx
用于生成SharePoint 框架 Web 部件的包。 为确保 SharePoint 开发人员获得出色的体验,我们改进了 @microsoft/mgt-spfx-utils
程序包和 消除歧义 功能,以在 SPFx 和工具包之间提供无缝集成。 这种中断性变更为未来更好的开发人员体验和更多功能铺平了道路。
Microsoft Graph 工具包 v4.0 更改枚举的定义方式。 工具包现在使用字符串联合,而不是使用 enum
来定义值。 此更改提供更好的键入和更好且统一的开发人员体验,尤其是对于React开发人员。 此更改会影响 AvatarType
、、ViewType
、UserType
、PersonType
GroupType
、 ResponseType
和 PersonCardInteraction
。 例如,而不是像这样使用 ViewType
:
<Person personQuery="me" view={ViewType.twolines}></Person>
现在使用 ViewType
如下所示:
<Person personQuery="me" view="twolines"></Person>
为了更好地与 Microsoft 365 命名保持一致, mgt-tasks
已重命名为 mgt-planner
。 这也意味着更新 mgt-planner
的组件不再支持 data-source
切换到 Outlook 任务。
我们利用这个机会来简化和遵循 和 mgt-planner
所需的权限的最低mgt-person
特权方法。
- 在使用
mgt-person
的应用程序中,用户可能需要同意新的权限范围;有关详细信息,请参阅组件 的权限表 。 - 对于写入操作,
mgt-planner
从Group.ReadWrite.All
Tasks.ReadWrite
更改为 ,对于读取操作,从Group.Read.All
更改为Tasks.Read
最小权限。
函数 prepScopes()
现在接受一个范围数组,该数组根据当前用户当前同意的权限范围集进行检查。 如果找到任何提供的范围,则不会请求额外的范围。 如果未找到匹配项,系统会提示用户同意提供的范围数组中的第一个范围。 这有助于用户体验,并允许开发人员使用最低特权方法。
开发人员在使用 组件时 @microsoft/mgt-components
,必须为应用程序中使用的所有 Web 组件显式调用 register 函数。 从 的根 @microsoft/mgt-components
目录导入不再具有自动注册的副作用。 例如,必须使用 import { Person } from '@microsoft/mgt-components;
和 调用 registerMgtPersonComponent()
,而不是使用 import { Person } from '@microsoft/mgt-components';
。
备注
@microsoft/mgt-react
第一次使用基础 Web 组件的组件时,会自动注册这些组件。 如果未使用React组件,则不会在浏览器中自动注册组件。 当这些应用程序发出原始 Web 组件标记而不是使用包装组件时,这会导致中断性变更。 请确保使用 registerMgt{Name}Component()
函数。
此配置移动到 类, MgtPersonCardConfig
使开发人员能够在应用程序的顶层导入配置和关联 getMgtPersonCardScopes()
函数,而无需自动将完整 mgt-person-card
组件和依赖项的权重添加到其应用程序的入口文件中。 这有助于更小的捆绑包大小和更好的整体开发人员体验。
更改的默认行为mgt-people-picker
,以便除非设置了 属性或 showPresence
属性,show-presence
否则不会显示用户状态。 此更改有助于提高不需要显示状态和采用最低特权方法的应用程序的性能。
为了保持合规性并与 Microsoft 365 的新式外观保持一致,Microsoft Graph 工具包现在使用 Fluent UI Web 组件。 建议使用 Fluent 2 设计系统更新某些样式。
为自定义组件的外观而提供的许多设计令牌都发生了变化。 有关详细信息,请参阅每个组件的文章的 CSS 自定义属性部分。
如果一直通过 使用 Microsoft Graph 客户端, globalProvider
则它已更新为 3.x。 有关此更改可能对你产生的影响的详细信息,请参阅 Microsoft Graph JS SDK 升级指南。
如果已在工具包的基础上生成自定义组件,请查看 Lit 升级指南 ,详细了解此更改可能对你产生的影响。
在此版本中,某些事件的对象结构进行了更改,以提供更好的开发人员体验。 所有事件都使用 CustomEvent<T>
泛型类型准确键入,以帮助提供高质量的代码。 有关详细信息,请参阅每个组件的文章的“事件”部分。
MgtTeamsChannelPickerConfig
已删除,Teams 通道选取器组件现在仅使用 Team.ReadBasic.All
和 Channel.ReadBasic.All
范围,而不是旧版 User.Read.All
和 Group.Read.All
范围。 此更改使应用程序能够使用最低特权方法。
在此版本中,删除了多个提供程序,以确保你的应用保持安全,并为用户提供最佳体验, (对条件访问的支持、持续访问评估等) 。 删除了以下提供程序:
- Teams 提供程序
- Teams MSAL2 提供程序
- MSAL 提供程序
- 将解决方案更新到工具包版本 3。
- 在 GitHub 上报告 bug 或提出功能请求。