Azure active directory office插件office.context.auth.getAccessTokenAsync错误13004

Azure active directory office插件office.context.auth.getAccessTokenAsync错误13004,azure-active-directory,office-js,Azure Active Directory,Office Js,我正在构建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 === 1

我正在构建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,并显示消息“name=”提供的应用程序资源Url无效。“”

我的舱单包含:

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

  </VersionOverrides>

a02210cd-88ac-4af6-b6cf-ee79006731c1
api://localhost:8001/a02210cd-88ac-4af6-b6cf-ee79006731c1
我已在以下位置创建加载项应用程序注册:
具有该应用程序id的(我尝试了“本机”类型和“web”类型,但不确定哪个应用于office插件).

错误代码13004和提供的消息
无效应用程序资源Url
指出,用于标识Azure AD v/s中资源的值与外接程序清单中指定的值不匹配

外接程序清单中
标记的值应与Azure AD中注册的
应用程序ID URI
中的值完全匹配。唯一的区别是清单中资源值的协议部分将是
api
而不是
https

万一

  • Azure AD应用程序注册中的应用程序ID URI为
    https://yourdomain.onmicrosoft.com/GUID1
  • 资源值将为
    api://yourdomain.onmicrosoft.com/GUID1
在外接程序身份验证正常工作之前,可能需要或可能不需要解决进一步的问题,因此,请务必注意在执行这些步骤后是否开始收到不同的错误消息

以下是Microsoft Docs和Github的一些指导链接,解释了这一点:


  • 一些人正确地指出WebApplicationInfo.Resource必须与在AD服务器中注册的appId匹配

    但基本上我所有的问题都是要登录哪个广告帐户(我有一个个人帐户和一个公司帐户,您使用不同的门户访问每个帐户),以及如何在该广告帐户/应用程序注册上设置清单

    有数百个旋钮/变量需要调整,几乎没有关于它们的含义或如何调整的反馈。因此,我将简单地介绍一个其他人可以用来实现此功能的工作示例。我不确定哪些旋钮/权限很重要

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

     ...
     <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>
    
    }

    注意-您不能只复制关键的requiredResourceAccess和preAuthorizedApplications部分。相反,使用Ad应用程序注册页面中的GUI,并转到“公开API”部分。首先添加一个作用域名为“user_impersonation”的作用域;然后添加3个授权客户端应用程序(假设您希望支持excel桌面和office online)—57fb890c-0dab-4253-a5e0-7188c88b2bb4、d3590ed6-52b3-4102-aeff-aad2292ab01c、bc59ab01-8403-45c6-8796-ac3ef710b3e3

    这将在您的清单中生成与我的预授权应用程序非常接近的部分

    我要感谢帮助我解决这一切的人——吉姆·巴雷特()


    祝你好运

    您的问题源于您试图在portal.azure.com上注册外接程序不支持此操作。若要对Office加载项使用单点登录系统,必须在AAD V 2.0端点处注册:。这在文档中有说明,例如,@Rohistaigal在几个地方链接到的概述文章中。他还链接了如何在网站上进行此操作的说明

    您对自己的问题给出的答案不是受支持的配置


    我认为你应该考虑给Rohit赏金。 确保Azure AD App Registration中的
    应用ID URI
    值与您为
    资源提供的值完全匹配。要检查应用程序ID URI。。转到Azure门户>Azure AD>应用程序注册>获取外接程序的应用程序注册>设置>属性在Azure ID应用程序注册中,我找不到您所说的“应用程序ID URI”字段。我确实找到了一个名为“应用程序ID”的字段,上面的ID(在WebApplicationInfo中)与之完全匹配。@Rohisaigal您应该在properties blade中看到它。。这是一张截图。。确保
    App ID URI
    中的值与
    中的值完全匹配,谢谢@rohisaigal。现在我明白了为什么你有那个应用程序ID URI(它可能与我的问题有关)。您将应用程序类型标记为“Web appAPI”,而我选择了“本机应用程序”。您引用的字段仅在您选择“Web app/API”时出现。现在-我不确定office js插件是什么。我不知道MSFT是调用该Web应用程序还是本机应用程序?实际上两者都不是(或者两者兼而有之)。这是一个javascript应用程序,运行在本机Excel代码中。我不知道本机可能意味着什么?office加载项最接近VSTO加载项,但它们不支持VSTO与ADAL,因此不能这样。无论如何,即使尝试将其称为web app/API,它仍然不起作用。该字段的格式是,但WebApplicationInfo的文档说资源的形式必须是api://myDomain.com/12345678-abcd-1234-efab-123456789abc,因此您的提示似乎不合适。感谢您的回复,但这并没有解决我的特定问题(这是与广告配置有关)。我有一个非常具体的问题:外接程序的web内容是否需要特别托管在Azure上,或者可以托管在任何其他托管提供商上?不支持在portal.Azure.com上注册应用程序。你应该使用AAD V2.0端点。请看。自己试试。我希望我可以包括一个屏幕截图。我尝试了你的建议。我在文档推荐的网站上创建了应用程序。然后(在该网站上)弹出一个对话框,说“我们在Azure Portal中有了新的体验,我们推荐managi
    {
    "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