我有一个Ionic 2应用程序,可以作为本机应用程序和Azure网站上托管的渐进式Web应用程序(与我的API应用程序服务站点不同)。在移动端,我可以通过使用移动SDK的登录方法和进行REST调用来成功获得刷新令牌。但是在网络方面(PWA),我无法使用SDK登录,因为InAppBrowser无法正常工作,因为login.microsoftonline.com
将 X-Frame-Options 设置为 DENY 即可。因此,我将浏览器重定向到/.auth/login/aad?session_mode=token&post_login_redirect_url=
,并将重定向URL返回到我的PWA索引页面。这通过#token向我发送令牌,我可以解析并使用它来成功验证我的后端API。
对我来说有用的是致电/.auth/refresh
。这总是给我错误:
sid发出的刷新请求失败,因为没有刷新令牌 在令牌商店中找到了。
API App配置为返回graph.microsoft.com
的访问令牌,我可以在/.auth/me
的初始调用中看到刷新令牌。我也可以使用/.auth/login/aad
直接通过浏览器会话登录,不需要参数。在那里,我可以成功拨打/.auth/me
和/.auth/refresh
所以我想弄清楚的是如何在浏览器中使这个工作。我需要用户重定向回我的应用程序,因此我指定了post_login_redirect_url
参数。有了这个,用户成功登录并重定向到我的应用程序。但是,当/.auth/refresh
的调用因上述错误而失败时。我希望这只是没有将正确的参数传递给登录端点但我不确定。