如何在 Office 365 Outlook 加载项中获取 Azure AD 访问令牌(调用 Graph API)?

How to obtain Azure AD access token(to call Graph API), inside the Office 365 Outlook add-in?

我正在构建 Office 365 Outlook 加载项。我想从那个加载项调用 Graph API,是否可以在不要求用户再次登录应用程序的情况下获取访问令牌?

is it possible to get the access token without asking user to login again for the app?

不,你不能。

在 Outlook 加载项中,有一个名为 getUserIdentityTokenAsync 的 JavaScript API。通过调用此 API,您可以获得 Exchange Identity 令牌,但您不能使用此令牌访问图 API。

要从 Outlook 加载项中的 Exchange 服务器获取更多信息,您可以考虑将 EWS 请求作为替代方法。

这里有一个示例供您参考

Outlook-Add-in-JavaScript-MakeEWSRequest

Office 加载项和 Graph API 之间没有单一的登录。您可以使用此 article 中的方法。您将了解如何在登录期间最大限度地减少用户操作,并缓存刷新令牌以在将来获取访问令牌。

Microsoft 现在使这成为可能。现在它处于预览状态,并表示它仅适用于 "Desktop",我不确定这是否意味着桌面 Outlook 而不是 Outlook Web,或者它可能只是意味着不是通过移动应用程序的 Outlook。

https://dev.office.com/docs/add-ins/develop/sso-in-office-add-ins

我还没有弄清楚如何实际实施他们讨论的令牌交换,但如果我找到它会在这里更新。