我正在尝试为Excel开发一个加载项,目标是根据电子表格中的数据创建日历事件。
我几乎可以做任何我想要的事情,除了使用REST API在日历中构建事件,我无法准确找出出错的地方。
我已关注documentation suggested by @MarcLaFleur。
我可以构建和运行应用程序没问题,但是当我点击“从OneDrive获取我的文件”时#39;按钮,我得到以下内容:
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
的范围:
如果你能为我揭开光明,那真的会帮助我。
答案 0 :(得分:2)
5001可能是因为未请求个人资料范围造成的。除 Calendar.ReadWrite 外,您还需要请求个人资料范围。您可以在注册应用程序时以及清单中执行此操作。有关更多信息,请参阅Marc LaFleur链接到的文章。
答案 1 :(得分:1)
可以在Enable single sign-on for Office Add-ins找到该文档。 ASP.NET和Node.js以及Troubleshooting上的文档也有步行。
这里有许多可能出错的事情,但如果不了解更多有关您的注册的信息,则很难确定。也就是说,这里有几个常见的错误:
您需要确保收到您正在开发的租户Admin Consent。这只是开发人员的要求,一旦您发布到商店,就不需要。
确保您已预先授权正确的申请。您需要预先授权:
确保您在manifest.xml
中定义的范围反映在apps.dev.microsoft.com
的应用注册中。
如果您对权限范围进行了更改,则需要确保重复管理员同意过程。当您获得同意时,他们同意在同意时注册的范围而不是App ID本身。
答案 2 :(得分:1)
5001错误通常表明Office中的加载项API存在根本性错误。例如,您的Office应用程序不支持API,清单不正确,或者office.js的版本不支持它。由于您正在使用该示例,因此我想到了两件事:
虽然Rick关于Scopes的评论是相关的,但您的清单和Azure注册看起来大都很好。配置文件必须与openid配合使用(仅配置文件不起作用;仅打开openid不起作用),正如所讨论的那样,您需要同意。作为开发人员,您可以尝试consenting for yourself at the protocol level。您需要根据需要更新client_id,redirect_uri和范围查询参数,并添加&amp; prompt = consent。
要回答以后的问题,Excel和Mail加载项是不同的,我的回答仅适用于Excel。对于Outlook,有一个different sample。