OfficeRuntime.Auth interface

包含与授权相关的 API 的接口。

注解

此接口中的方法等效于 Office.auth 接口中的方法。 如果将来添加新的身份验证类型,则只会将其添加到 接口中 Office.auth 。 为简单起见,整个文档中的代码示例都使用 Office.auth

示例

// Get the auth context object and use it to get an
// access token.
const authContext = OfficeRuntime.context.auth;
const accessToken = authContext.getAccessTokenAsync();

方法

getAccessToken(options)

调用 Azure Active Directory V 2.0 终结点以获取令牌来访问加载项的 Web 应用程序。 使加载项能够识别用户。 服务器端代码可以使用此令牌通过 “代表”OAuth 流访问外接程序 Web 应用程序的 Microsoft Graph。 此 API 需要将加载项桥接到 Azure 应用程序的单一登录配置。 Office 用户使用组织帐户和 Microsoft 帐户登录。 Microsoft Azure 返回适用于两种用户帐户类型的令牌,以访问 Microsoft Graph 中的资源。

方法详细信息

getAccessToken(options)

调用 Azure Active Directory V 2.0 终结点以获取令牌来访问加载项的 Web 应用程序。 使加载项能够识别用户。 服务器端代码可以使用此令牌通过 “代表”OAuth 流访问外接程序 Web 应用程序的 Microsoft Graph。 此 API 需要将加载项桥接到 Azure 应用程序的单一登录配置。 Office 用户使用组织帐户和 Microsoft 帐户登录。 Microsoft Azure 返回适用于两种用户帐户类型的令牌,以访问 Microsoft Graph 中的资源。

getAccessToken(options?: AuthOptions): Promise<string>;

参数

options
OfficeRuntime.AuthOptions

可选。 接受 对象 AuthOptions 以定义登录行为。

返回

Promise<string>

承诺访问令牌。

注解

应用程序:Excel、Outlook、PowerPoint Word

重要说明

  • 在 Outlook 中,如果在 Outlook.com 或 Gmail 邮箱中加载加载项,则不支持此 API。

  • 在 Outlook 网页版 中,如果使用 Safari 浏览器,则不支持此 API。 这会导致错误 13001 (“用户未登录到 Office”) 。

  • 在 Outlook 网页版中,如果使用 displayDialogAsync 方法打开对话框,则必须关闭对话框,然后才能调用 getAccessToken

示例

async function getUserData() {
  try {
      let userTokenEncoded = await OfficeRuntime.auth.getAccessToken();
      let userToken = jwt_decode(userTokenEncoded); // Using the https://www.npmjs.com/package/jwt-decode library.
      console.log(userToken.name); // user name
      console.log(userToken.preferred_username); // email
      console.log(userToken.oid); // user id     
  }
  catch (exception) {
      if (exception.code === 13003) {
          // SSO is not supported for domain user accounts, only
          // Microsoft 365 Education or work account, or a Microsoft account.
      } else {
          // Handle error
      }
  }
}