我希望与Microsoft Outlook集成。我能够使用MSAL.js登录并获取访问令牌,但我无法获取刷新令牌。是否有方法可以实现?
我希望与Microsoft Outlook集成。我能够使用MSAL.js登录并获取访问令牌,但我无法获取刷新令牌。是否有方法可以实现?
假设您正在使用MSAL.js (https://github.com/AzureAD/microsoft-authentication-library-for-js),那么您正在使用隐式流进行身份验证和授权。
隐式流不支持刷新令牌,但您可以静默地请求新的令牌。这类似于您最初请求令牌(ID或访问令牌)的方式。不幸的是,我发现MSAL.js没有透明地完成这项操作,因此我需要在代码中检测过期的令牌并请求新的令牌。您可以在此处了解更多有关刷新令牌的信息。
或者,如果您正在实现的内容允许您使用其他MSAL库之一(例如.NET库),则可以使用另一种明确支持刷新令牌的OAuth流程。
acquireTokenSilent
来手动更新令牌。
要更新idToken,请在身份验证参数中仅传递clientId作为范围
sessionStorage
替换为 localStorage
。 - PeterMacquireTokenSilent
方法吗?我很难找到如何调用它。 - yesmanconst myMSALObj = new Msal.UserAgentApplication(msalConfig)
然后 myMSALObj.acquireTokenSilent(request)
。您可以在 https://github.com/Azure-Samples/active-directory-b2c-javascript-msal-singlepageapp 查看示例项目。在 JavaScriptSPA 文件夹中有弹出窗口和重定向的示例(authPopup.js 和 authRedirect.js)。 - qnguyen