getAccessTokenAsync返回13001

时间:2018-01-29 09:29:48

标签: office-js outlook-web-addins

成功上传清单后,我现在正在努力使用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;
        }
    }

下面的打印屏幕:

enter image description here

其他答案:

2)在我的清单文件中,我定义了ExecuteFunction,以便在用户单击addin时运行该方法。由于宽度太小,我没有使用任务窗格。我想打开一个对话框,以便有更多空间来渲染这些东西。因此,在对话框打开之前我无法获取信息,因为我可能获得敏感信息,这就是为什么整个代码在打开对话框之后。

3)我的公司使用主Office 365帐户。设置是混合的(内部AD和云邮箱。数据通过DirSync同步)。

2 个答案:

答案 0 :(得分:0)

  1. Hmmmm。产品团队报告在Office Online中不应该看到13001。我会尽力证实这一点。

  2. 看起来您在一个主要用于打开对话框的方法中调用getAccessTokenAsync。你能澄清一下原因吗?您无需创建对话框即可使用API​​。您可以从任务窗格调用API,如果用户未登录,Office本身将打开登录对话框。

  3. 此外,使用Microsoft帐户登录的用户可以访问Office Online,因此您使用它的事实并不能确保您登录到Office 365帐户。您使用的是Office 365帐户还是MSA帐户?

  4. 如果您还没有,请查看:Troubleshoot SSO in Add-ins

答案 1 :(得分:0)

我不知道这是否是一个修复,但我已经拼命推送所有复选框(在portal.azure.com - > Azure Active Directory - >注册应用程序 - > myapp),我有一个不同的错误现在。enter image description here