Azure 获取用户';O365华夫饼菜单中的应用程序

Azure 获取用户';O365华夫饼菜单中的应用程序,azure,office365,Azure,Office365,在用户使用其Microsoft学校/组织帐户登录到我们的系统后,我将尝试检索有关他可用的应用程序的数据 通常,人们在进入例如portal.office.com时会在所谓的“华夫菜单”中看到这些信息,如下图所示 在检查了该网站的请求后,我发现它是从中获取数据的。但是,要访问此资源,需要登录office.com(即使用会话cookie),但我的应用程序使用基于令牌的身份验证-我已在Azure AD中注册了我的应用程序,授予它访问某些服务(如MS Graph API)的权限,然后我使用令牌发出访问这些

在用户使用其Microsoft学校/组织帐户登录到我们的系统后,我将尝试检索有关他可用的应用程序的数据

通常,人们在进入例如portal.office.com时会在所谓的“华夫菜单”中看到这些信息,如下图所示

在检查了该网站的请求后,我发现它是从中获取数据的。但是,要访问此资源,需要登录office.com(即使用会话cookie),但我的应用程序使用基于令牌的身份验证-我已在Azure AD中注册了我的应用程序,授予它访问某些服务(如MS Graph API)的权限,然后我使用令牌发出访问这些服务的请求

问题是我可以从一些“Azure友好”应用程序(如MS Graph API)获取华夫菜单信息吗?或者,您知道检索此信息的其他方法吗

谢谢你的帮助和提示


这是不受支持/不可用的


我也不知道有哪种API会公开用户的华夫菜单。我建议你看看。考虑到这种体验与O365 Web UI是隔离的,我怀疑这不是通过API实现的

我知道这个问题已经提了一年了,但也许其他人很难从O365获取应用程序信息

据我所知,没有公共API可用于安全获取信息。但通过一些变通方法,您可以从Office 365获取当前登录用户的应用程序:

以下是实现此目标所需的基本步骤:

  • 创建(空白)SharePoint.aspx页面
    • 标记添加到页面-->这将允许您从任何不同的环境中构建页面
    • 将脚本标记添加到页面并读取localStorage[“SPSUITELKSJSON”]属性-->其中包含用户应用程序的所有相关信息
    • 将localStorage对象(
      window.top.postMessage(SuiteLink,“*”;
      )推送到父帧
  • 将.aspx页面上载到SharePoint Online中的库,并授予组织中所有用户的读取权限
  • 在您控制的web应用程序中包含iFrame
    • 确保使用指向SharePoint联机页面的智能链接(例如
      https://login.microsoftonline.com/login.srf?wa=wsignin1.0&whr=&wreply=https://.sharepoint.com/pages/your-应用程序代理页.aspx
    • 消息
      事件注册JavaScript事件侦听器,以从SharePoint Online接收localStorage对象
就这样,现在您拥有了当前登录用户的应用程序信息。感谢智能链接,用户无需事先登录office.com即可获得会话cookie


有关更多详细信息,请参阅本文:

您是否已签出从Microsoft Graph API获取的用户的
assignedLicenses
属性?它至少可以部分包含您正在寻找的内容。@juunas是的,我已经检查过了,但您的意思可能是
assignedplan
?因为在那里我可以看到一些应用程序(如SharePoint或Yammer),但我看不到其他应用程序,如Word/Excel。在
assignedLicenses
中,我只看到一个
skuId
和一个空数组,用于
disabledPlans
。谢谢您的回答!我试试你的建议。