在Excel加载项中validationREST请求

我正在尝试开发Excel的加载项,目标是根据电子表格中的数据创build日历事件。

除了使用REST API构build日历中的事件外,我几乎可以做所有我想要做的事情,而且我无法准确判断出错的地方。

我遵循@MarcLaFleurbuild议的文档 。

我可以构build和运行应用程序没有问题,但是当我点击“从我的文件从OneDrive”button,我得到以下内容:

Code: 5001 Message: An internal error has occurred. name: Internal Error 

这是来自该函数的else子句中的公共目录中的program.js文件。

 function getDataWithoutAuthChallenge() { Office.context.auth.getAccessTokenAsync({ forceConsent: false }, function (result) { if (result.status === "succeeded") { // TODO1: Use the access token to get Microsoft Graph data. accessToken = result.value; getData("/api/onedriveitems", accessToken); } else { console.log("Code: " + result.error.code); console.log("Message: " + result.error.message); console.log("name: " + result.error.name); document.getElementById("getGraphAccessTokenButton").disabled = true; } }); } 

这是我的manifest.xml中的范围

  ... <WebApplicationInfo> <Id>c931b396-7 ... </Id> <Resource>api://localhost:3000/c931b396-7 ... </Resource> <Scopes> <Scope>files.read.all</Scope> <Scope>profile</Scope> </Scopes> </WebApplicationInfo> </VersionOverrides> 

这里是apps.dev.microsoft.com上的范围:

Imgur

如果你能为我摆脱任何光线,那真的会帮助我。

5001错误通常表明Office中的加载项API存在根本性错误。 例如,您的Office应用程序不支持API,清单不正确,或者office.js的版本无法使用。 既然你正在使用这个示例,那么有两件事情会想起来:

  1. 你没有运行最新的内部人员构build
  2. 错误的清单正在被加载(这有时会发生,如果你在Windows上,并使用具有旧模式文件的Visual Studio 2017的版本,所以你必须做一个后生成清理debugging清单XML)

尽pipeRick对Scopes的评论是相关的,但你的清单和Azure注册看起来大体上是好的。 configuration文件必须与openid一起工作(configuration文件本身将不起作用;单独的openid将无法正常工作),正如讨论,你需要这个同意。 作为开发者,你可以在协议层面尝试自己的意见 。 您需要根据需要更新client_id,redirect_uri和scope查询参数,并添加&prompt = consent。

要回答以后的问题,Excel和Mail加载项是不同的,我的答案只适用于Excel。 对于Outlook,还有一个不同的示例 。

5001可能是由于没有请求configuration文件范围造成的。 除了Calendar.ReadWrite之外,您还需要请求configuration文件范围。 您在注册应用程序时以及在清单中执行此操作。 有关更多信息,请参阅Marc LaFleur链接的文章。

文档可以在启用Office加载项的单一login中find。 对于ASP.NET和Node.js ,还有一些步骤,以及关于故障排除的文档。

在这里有很多事情可能会出错,但是如果不了解更多关于注册的信息,则很难确定。 这就是说,这里有几个常见的错误:

  • 您需要确保您获得针对您正在开发的租户的pipe理员同意书 。 这只是一个开发要求,一旦发布到商店就不需要了。

  • 确保你已经预先授权正确的应用程序。 您需要预授权:

    • d3590ed6-52b3-4102-aeff-aad2292ab01c(Microsoft Office)
    • 57fb890c-0dab-4253-a5e0-7188c88b2bb4(Office Online)
    • bc59ab01-8403-45c6-8796-ac3ef710b3e3(Office Online)
  • 确保您在manifest.xml中定义的范围反映在apps.dev.microsoft.com的应用程序注册中。

  • 如果您更改了权限范围,则需要确保重复pipe理员同意过程。 当您获得同意时,他们同意在同意时注册的范围,而不是应用程序ID本身。

这里有很多文档: