Outlook Web加载项调用Microsoft Graph

问题描述 投票:1回答:2

我正在关注office-js-helpers以启用SSO登录,然后使用访问令牌来调用Graph API。

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

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

目前的结果。 enter image description here

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

这是演示项目OutlookOneDriveGraphAddIn

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

如果有任何不清楚的地方,请告诉我。

office-js azure-ad-graph-api outlook-web-addins office-js-helpers
2个回答
0
投票

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

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

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


0
投票

这里有2个问题。

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

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

问题2:如何从我的加载项中获取访问令牌?

请参阅此处的文档:https://docs.microsoft.com/en-us/office/dev/add-ins/develop/sso-in-office-add-ins#add-client-side-code

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
        }
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.