Microsoft Graph JavaScript SDK 3.0.0 正式发布

Posted Justin-Liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Microsoft Graph JavaScript SDK 3.0.0 正式发布相关的知识,希望对你有一定的参考价值。

该版本支持多重身份验证流,并增强了大文件上传任务。新版本中引入的更改是不向后兼容的,关于升级客户端的具体操作请参见升级指导书

Microsoft Graph JS SDK 3.0.0 需要 Node.js 12 LTS 或更高版本。源码使用 TypeScript 4.x 实现。

认证增强

在这次更新中,微软通过添加对 @azure/msal-browser 和 @azure/identity 的支持,实现了对多重身份验证流的支持。此更新还删除了 ImplicitMSALAuthenticationProvider。

使用 @azure/msal-browser 支持认证代码流

Microsoft Graph javascript SDK 3.0.0 通过引入 AuthCodeMSALBrowserAuthenticationProvider 类来增强身份验证。这个类增加了使用 @azure/msal-browser 进行身份验证的支持。这个 MSAL 库支持基于浏览器的应用程序的 PKCE 授权代码流

如果想知道它是否是你需要的认证提供程序,请访问微软 Docs 的宝库文章👇
Choose a Microsoft Graph authentication provider based on scenario

import {
  PublicClientApplication,
  InteractionType,
  AccountInfo,
} from "@azure/msal-browser";
import {
  AuthCodeMSALBrowserAuthenticationProvider,
  AuthCodeMSALBrowserAuthenticationProviderOptions,
} from "@microsoft/microsoft-graph-client/authProviders/authCodeMsalBrowser";

const options: AuthCodeMSALBrowserAuthenticationProviderOptions = {
  account,
  interactionType: InteractionType.PopUp,
  scopes: ["user.read", "mail.send"],
};

const authProvider = new AuthCodeMSALBrowserAuthenticationProvider(
  publicClientApplication,
  options
);

const graphClient = Client.initWithMiddleware({
  authprovider,
});

使用 @azure/identity 启用客户端凭据流等功能

JavaScript SDK 3.0.0 引入了 TokenCredentialAuthenticationProvider 类,它允许使用 @azure/identity 身份凭证类进行身份验证。

TokenCredentialAuthenticationProvider 类添加了以下新功能:

  • 使用证书类 (如 ClientSecretCredentialClientCertificateCredential) 进行服务器端身份验证。
  • 使用证书类 (如 DeviceCodeCredentialVisualStudioCodeCredentialDefaultAzureCredential) 支持多重身份验证流。

TokenCredentialAuthenticationProvider.
creating an instance of TokenCredentialAuthentication

删除了 ImplicitMSALAuthenticationProvider

ImplicitMSALAuthenticationProvider 类将从 3.0.0 版的 Microsoft Graph JavaScript SDK 开始不可用。

根据 OAuth 2.0隐式授权,微软不再推荐使用 ImplicitMSALAuthenticationProvider,即使用隐式授权流。

使用Node.js Stream上传较大的文件

LargeFileTaskUpload 类允许你上传文件到 OneDrive、Outlook 和 Universal Print。在这个版本中,微软添加了 StreamUpload(支持 Node.JS Stream) 和 FileUpload(支持 ArrayBuffer、Blob 和 Buffer 等文件格式的上传)。

现在可以使用 UploadEventHandlers 跟踪上传的进度。

下面的示例展示了如何使用新的 StreamUpload 类。

import StreamUpload from "@microsoft/microsoft-graph-client";

import * as fs from "fs";

const fileName = "<FILE_NAME>";

const stats = fs.statSync(`./test/sample_files/${fileName}`);

const totalsize = stats.size;

const readStream = fs.createReadStream(`./test/sample_files/${fileName}`);

const fileObject = new StreamUpload(readStream, fileName, totalsize);

const progress = (range?: Range, extraCallBackParam?: unknown) => {

  // Handle progress event

};

const uploadEventHandlers: UploadEventHandlers = {

  progress,

  extraCallBackParam,

};

const options: LargeFileUploadTaskOptions = {

  rangeSize: 327680,

  uploadEventHandlers: UploadEventHandlers,

};

const uploadTask = new LargeFileUploadTask(client, fileObj, uploadSession, options);

const uploadResult: UploadResult = await uploadTask.upload();

要了解关于此更新的更多信息,请参阅大文件上传任务

以上是关于Microsoft Graph JavaScript SDK 3.0.0 正式发布的主要内容,如果未能解决你的问题,请参考以下文章

创建传入用户对象的用户 (Microsoft Graph)

从 Azure Active Directory Graph 迁移到 Microsoft Graph

Microsoft Graph - 删除访问包分配

获取 Microsoft Graph API 的有效访问令牌

如何发送 Microsoft Graph 上传会话的最终字节?

Microsoft Graph 安全警报。状态问题