Microsoft Azure AD/Microsoft图形API AngularJS

Microsoft Azure AD/Microsoft图形API AngularJS,angularjs,azure-active-directory,adal,microsoft-graph-api,Angularjs,Azure Active Directory,Adal,Microsoft Graph Api,我正在尝试在我们的web应用程序中实现一项功能,该功能允许用户连接他们的Microsoft/Outlook帐户,以便从系统中的Microsoft Graph API查看他们的日历事件和联系人 除了几件事之外,我的工作还不错。当用户关闭浏览器时,连接帐户的生命周期似乎结束了。这意味着,每当用户登录到我们的web应用程序时,如果他们查看日历,他们将被重定向到Microsoft登录屏幕进行登录。这不是正常的方式,是吗?我以为你只被重定向到一次登录以授权web应用权限 我的理解是,一旦用户授予您的应用程

我正在尝试在我们的web应用程序中实现一项功能,该功能允许用户连接他们的
Microsoft/Outlook
帐户,以便从系统中的
Microsoft Graph API
查看他们的日历事件和联系人

除了几件事之外,我的工作还不错。当用户关闭浏览器时,连接帐户的生命周期似乎结束了。这意味着,每当用户登录到我们的web应用程序时,如果他们查看日历,他们将被重定向到Microsoft登录屏幕进行登录。这不是正常的方式,是吗?我以为你只被重定向到一次登录以授权web应用权限

我的理解是,一旦用户授予您的应用程序连接到其帐户的权限,除非他们1)当前未登录到第三方服务或2)已撤销您的应用程序权限,否则您将能够根据其权限权限访问他们的数据

对于这么简单的东西来说,这是一个非常乏味的实现,我开始觉得我错过了一个关键的信息,因为我现在有点疯狂,试图在我们的web应用程序中创建一个更好的“流”

仅供参考,我正在使用来自的
adal.js
adal angular.js
1.0.9

2016年6月17日更新


我已经离开了我以前使用的o
adal.js版本,现在进入了
experimental
分支,该分支的工作方式与预期的非常接近。我仍然有一些额外的代码来防止infinte iFrame循环,但有一个功能可以防止
adal
接管后端请求,这非常有用。

您是否将访问令牌存储在任何地方,以便在用户返回时使用?不,我不知道如何使用id令牌重新初始化adal服务,我希望我只是错过了一些东西simple@MartynC为了添加/澄清我之前的评论,我可以存储返回的令牌,但是,解析令牌的代码存在于位置更改处理程序中,并且没有使用先前存储的令牌的挂钩。我还认为令牌已经过期,因为库可以发送一个刷新令牌。任何解析旧令牌的尝试都将失败,因为库在传出请求上存储唯一的状态值,然后在传入令牌上进行验证。本质上,我需要重写整个库。默认情况下,adal.js使用HTML5会话存储来缓存令牌。您是否尝试将其切换到本地存储?@dstrockis我已启用本地存储。当我有机会获得最新信息时,我会更新我的答案。我在这一阶段有一个有效的解决方案,只是花了很多时间才弄明白,当用户返回时,您是否将访问令牌存储在任何地方以供使用?不,我对如何使用id令牌重新初始化adal服务感到困惑,我希望我遗漏了一些东西simple@MartynC为了补充/澄清我之前的评论,我可以存储返回的令牌,但是,解析令牌的代码存在于位置更改处理程序中,并且没有使用以前存储的令牌的挂钩。我还认为令牌已经过期,因为库可以发送一个刷新令牌。任何解析旧令牌的尝试都将失败,因为库在传出请求上存储唯一的状态值,然后在传入令牌上进行验证。本质上,我需要重写整个库。默认情况下,adal.js使用HTML5会话存储来缓存令牌。您是否尝试将其切换到本地存储?@dstrockis我已启用本地存储。当我有机会获得最新信息时,我会更新我的答案。我在这一阶段有一个有效的解决方案,只是花了很多时间才达到目的