Office js Outlook web加载项调用Microsoft Graph

Office js Outlook web加载项调用Microsoft Graph,office-js,azure-ad-graph-api,outlook-web-addins,office-js-helpers,Office Js,Azure Ad Graph Api,Outlook Web Addins,Office Js Helpers,下面我将启用SSO登录,然后使用访问令牌调用Graph API 但是,即使我在manifest.xml中添加了登录窗口,也会在新选项卡中打开登录窗口 <AppDomain>https://login.windows.net</AppDomain> <AppDomain>https://login.microsoftonline.com</AppDomain> 编辑: 对于SSO登录,是否应该在Outlook加载项中重定向,而不是打开新的Web浏

下面我将启用SSO登录,然后使用访问令牌调用Graph API

但是,即使我在manifest.xml中添加了登录窗口,也会在新选项卡中打开登录窗口

<AppDomain>https://login.windows.net</AppDomain>
<AppDomain>https://login.microsoftonline.com</AppDomain>

编辑:
对于SSO登录,是否应该在Outlook加载项中重定向,而不是打开新的Web浏览器窗口

这是演示项目

我想在我的Outlook web插件中启用graph api,graph api需要登录过程,我想能够在我的web插件中请求访问令牌


如果有什么不清楚的地方,请告诉我。

嘿,我也遇到过同样的问题。我还正在开发一个Outlook插件,它需要访问令牌从GraphAPI请求资源。经过长时间的搜索,我找到了最好的方法,并完成了我的插件的实现

尝试中的步骤。我的做法是使用nodejs中间件进行身份验证及其工作。现在我可以使用它访问大多数GraphApi资源。希望这有帮助


请注意,使用此方法时,您应该启用应用程序权限,而不是委派权限。

这里有两个问题

问题#1:对于SSO登录,是否应在Outlook中重定向 加载项而不是打开新的Web浏览器窗口

它不应该在Office加载项中重定向,原因很简单,这是针对OAuth的。使用OAuth身份验证时,您必须向用户显示URL,否则您可以在加载项中伪造与Microsoft登录类似的UI,并窃取用户的凭据。显然,这是不安全的。因此,当您调用
getAccessTokenAsync
时,如果用户未登录,它应该会弹出一个对话框。登录由Microsoft处理,之后,通过相同的方法
getAccessTokenAsync
可以使用令牌

问题#2:如何从外接程序获取访问令牌

请参阅此处的文档:


这里没有问题,也没有可复制的代码。如果你能解释你想要实现什么以及你面临的问题,我们可以更好地帮助你。此外,请添加一些代码,以便我们尽可能重现问题。@MaviDomates请检查更新。@OutlookAdd insTeam MSFT请检查更新。我想实现身份验证流,建议使用。我链接到的文档部分描述了如何使用API实现身份验证流。不同的用户需要访问自己的onedrive文件。应用程序权限是否适用于此场景?我不认为您认为我会收到允许弹出新窗口的警报消息吗?如果弹出窗口是预期的且合理,为什么会出现弹出窗口?为什么不直接打开窗口而不显示此消息?信不信由你,这是意料之中的。这样做的原因(我知道它看起来很可怕)也是一个安全特性。假设地说,如果你没有警告用户从另一个域弹出窗口,他们可以将你弹出到任何恶意网站。他们做到了(几年前,还记得我们在网上冲浪时弹出窗口的数量吗?),而现在,只有相同的域弹出窗口才允许,没有额外的要求。有另一种方法可以将OAuth与office外接程序一起使用,但您将无法使用SSO—在我看来,这使事情变得更容易。@Edward如果绿色勾号符合答案,我将不胜感激。
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
        }
    }
});