成功上传清单后,我现在正在努力使用Office JS API获取访问令牌。我跟着the instructions但到目前为止没有运气。
我得到的错误是13001 - the user is not signed in Office
。但是很明显,我从Outlook Online运行加载项后登录到Office 365。
代码:
function showDialog() {
getDataWithToken({ forceConsent: false });
Office.context.ui.displayDialogAsync('https://localhost:3000/PluginApp/index.html',
{ height: 80, width: 80, displayInIframe: true}, function(asyncResult) {
// ... code
});
function getDataWithToken(options) {
Office.context.auth.getAccessTokenAsync(options,
function (result) {
debugger;
if (result.status === "succeeded") {
//TODO1: Use the access token to get Microsoft Graph data.
}
else {
handleClientSideErrors(result);
}
});
}
function handleClientSideErrors(result) {
switch (result.error.code) {
case 13001:
getDataWithToken({ forceAddAccount: true });
break;
}
}
下面的打印屏幕:
其他答案:
2)在我的清单文件中,我定义了ExecuteFunction,以便在用户单击addin时运行该方法。由于宽度太小,我没有使用任务窗格。我想打开一个对话框,以便有更多空间来渲染这些东西。因此,在对话框打开之前我无法获取信息,因为我可能获得敏感信息,这就是为什么整个代码在打开对话框之后。
3)我的公司使用主Office 365帐户。设置是混合的(内部AD和云邮箱。数据通过DirSync同步)。
答案 0 :(得分:0)
Hmmmm。产品团队报告在Office Online中不应该看到13001。我会尽力证实这一点。
看起来您在一个主要用于打开对话框的方法中调用getAccessTokenAsync。你能澄清一下原因吗?您无需创建对话框即可使用API。您可以从任务窗格调用API,如果用户未登录,Office本身将打开登录对话框。
此外,使用Microsoft帐户登录的用户可以访问Office Online,因此您使用它的事实并不能确保您登录到Office 365帐户。您使用的是Office 365帐户还是MSA帐户?
如果您还没有,请查看:Troubleshoot SSO in Add-ins。
答案 1 :(得分:0)