Office加载项Office.context.auth.getAccessTokenAsync错误13004

刘易斯

我正在构建一个office.js excel插件。

我有代码尝试获取身份验证信息:

Office.context.auth.getAccessTokenAsync(function(result) {
  if (result.status === "succeeded") {
    // Use this token to call Web API
    var ssoToken = result.value;
  } else {
    if (result.error.code === 13003) {
      // SSO is not supported for domain user accounts, only
      // work or school (Office 365) or Microsoft Account IDs.
    } else {
      // Handle error
    }
  }

这样做时,我返回错误13004,并显示消息“名称=“提供了无效的应用程序资源URL”。

我的清单包含:

 <WebApplicationInfo>
      <Id>a02210cd-88ac-4af6-b6cf-ee79006731c1</Id>
      <Resource>api://localhost:8001/a02210cd-88ac-4af6-b6cf-ee79006731c1</Resource>
    </WebApplicationInfo>

  </VersionOverrides>

我已经在具有该应用程序ID的https://portal.azure.com上创建了一个插件应用程序注册(我尝试过“本机”类型和“网络”类型,但不确定是哪种类型适用于Office插件)。

刘易斯

几个人正确地指出,WebApplicationInfo.Resource必须与在AD服务器中注册的appId相匹配。

但是基本上我所有的问题都与WHICH AD帐户有关(我有一个个人帐户和一个公司帐户,并且您使用不同的门户网站来访问它们),以及如何在该AD帐户/应用程序注册上设置清单在https://portal.azure.com上

有数百个旋钮/变量可以调整,实际上没有关于它们的含义或如何调整的反馈。因此,我将简单地提供一个其他人可以使用的工作示例。我不太确定哪个旋钮/权限很重要。

这是一个工作清单(我的应用程序的子集):

 ...
 <WebApplicationInfo>
  <Id>fc63fe86-d03c-4ae9-b520-373fcb386d40</Id>
  <Resource>api://localhost:8001/09c94a00-cad9-4af6-ac2c-cdb81a724f16</Resource>
  <Scopes>
  <Scope>Files.Read.All</Scope>
    <Scope>offline_access</Scope>
    <Scope>openid</Scope>
    <Scope>profile</Scope>
  </Scopes>
</WebApplicationInfo>

注意-上面的'id'似乎无关紧要,但是资源中的GUID必须与您注册的应用程序中的appid相匹配。其余的appID必须与您连接插件的方式匹配(目前我仅使用localhost)。

使用门户网站https://portal.azure.com创建您的应用程序注册:

选择“ Azure Active Directory”,再选择“应用程序注册”,创建新的应用程序注册...大多数细节可能无关紧要,因为您将全部替换掉​​,但是我选择了type = web

然后使用,您将要下载清单并针对该清单进行DIFF处理,并继续对清单进行更改,直到它与该清单匹配为止(因为您不能简单地替换清单中使用的GUID)。

{
"id": "1a225d9a-13f5-4ff6-a62d-bdbd819ef5e5",
"acceptMappedClaims": null,
"accessTokenAcceptedVersion": 2,
"allowPublicClient": null,
"appId": "09c94a00-cad9-4af6-ac2c-cdb81a724f16",
"appRoles": [],
"oauth2AllowUrlPathMatching": false,
"createdDateTime": "2019-03-11T15:45:24Z",
"groupMembershipClaims": null,
"identifierUris": [
    "api://localhost:8001/09c94a00-cad9-4af6-ac2c-cdb81a724f16"
],
"informationalUrls": {
    "termsOfService": null,
    "support": null,
    "privacy": null,
    "marketing": null
},
"keyCredentials": [],
"knownClientApplications": [],
"logoUrl": null,
"logoutUrl": null,
"name": "StackOverflowTest",
"oauth2AllowIdTokenImplicitFlow": true,
"oauth2AllowImplicitFlow": true,
"oauth2Permissions": [
    {
        "adminConsentDescription": "consent to use plugin",
        "adminConsentDisplayName": "consent to use plugin",
        "id": "56b9c899-4e7f-47d3-a584-50ab695b164e",
        "isEnabled": true,
        "lang": null,
        "origin": "Application",
        "type": "User",
        "userConsentDescription": "consent to use plugin",
        "userConsentDisplayName": null,
        "value": "user_impersonation"
    }
],
"oauth2RequirePostResponse": false,
"optionalClaims": null,
"orgRestrictions": [],
"parentalControlSettings": {
    "countriesBlockedForMinors": [],
    "legalAgeGroupRule": "Allow"
},
"passwordCredentials": [],
"preAuthorizedApplications": [
    {
        "appId": "57fb890c-0dab-4253-a5e0-7188c88b2bb4",
        "permissionIds": [
            "56b9c899-4e7f-47d3-a584-50ab695b164e"
        ]
    },
    {
        "appId": "d3590ed6-52b3-4102-aeff-aad2292ab01c",
        "permissionIds": [
            "56b9c899-4e7f-47d3-a584-50ab695b164e"
        ]
    },
    {
        "appId": "bc59ab01-8403-45c6-8796-ac3ef710b3e3",
        "permissionIds": [
            "56b9c899-4e7f-47d3-a584-50ab695b164e"
        ]
    }
],
"publisherDomain": "USENAMEFROMYOURDEFAULTGENERATEDAPPREGISRATION.onmicrosoft.com",
"replyUrlsWithType": [
    {
        "url": "https://localhost:8001",
        "type": "Web"
    }
],
"requiredResourceAccess": [
    {
        "resourceAppId": "00000003-0000-0000-c000-000000000000",
        "resourceAccess": [
            {
                "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
                "type": "Scope"
            }
        ]
    }
],
"samlMetadataUrl": null,
"signInUrl": null,
"signInAudience": "AzureADMultipleOrgs",
"tags": [],
"tokenEncryptionKeyId": null

}

注意-您不能仅复制关键的requiredResourceAccess和preAuthorizedApplications部分。而是使用广告应用程序注册页面中的GUI,然后转到“公开API”部分。首先添加一个范围为scope-name ='user_impersonation'的范围;然后添加3个授权的客户端应用程序(假设您要支持excel桌面和办公室在线)-57fb890c-0dab-4253-a5e0-7188c88b2bb4,d3590ed6-52b3-4102-aeff-aad2292ab01c,bc59ab01-8403-45c6-8796-ac3ef710b3e3

那应该在清单中产生与preAuthorizedApplications非常接近的部分。

我想感谢帮助我解决所有问题的人-Jim Barrett(https://stackoverflow.com/users/4114387/jim-barrett

祝你好运!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

调用Office.context.auth.getAccessTokenAsync时出现错误13012

Office Outlook加载项OAuth错误

Office Web 加载项 - 保存设置时出现内部错误

使用集中式部署时Office加载项错误

Microsoft O365缓存的加载项-Office.context.mailbox.item为null

Outlook 加载项桌面:Office.context.ui.close() 在桌面版本上不起作用

Office.context.ui.displayDialogAsync引发5001内部错误

如何解决 Office 加载项 (Outlook) 的此 NPM/Yeoman 错误日志?

在Office加载项中进行AAD登录时出现X-Frame-Option DENY错误

Office JS加载项

打包Office加载项

无法加载 Office 加载项

在Office加载项中启用扩展错误日志记录(以查看有关错误对象的完整语句)

用于Office的C#Visual Studio工具会出现此错误:Excel遇到X加载项的问题

Office 2013的Excel加载项

Office.context.mailbox.item.addFileAttachmentAsync该代码正常工作。为什么发生内部错误?

从 office 加载项,是否可以获取 office 文档的加载位置?

Auth0 Gradle依赖项错误

Firebase用户的context.auth仍存在allAuthenticatedUsers保护的Google函数错误,并带有UNAUTHENTICATED

使用Office JS API的Office VSTO加载项与Office加载项

Outlook / Office加载项失败,并出现错误:AADSTS900561:终结点仅接受POST请求。收到GET ==已解决

如何为桌面版 Office 部署 ExcelApi 中的错误/性能修复程序,以及 Web Excel 加载项所需的 JavaScript 文件

错误加载 Office.dll COMException: 'Errorloading type library/DLL'

Office商店中Office加载项的付款选项

Office Web加载项:Office.initialize()函数

Angular Office加载项:“找不到名称'Office'”

分发Microsoft.Office.Tools Dll和Office加载项

Office.context.ui.displayDialogAsync的标题

office.context.mailbox 未定义