在我的Office 365第三方Web应用程序中,我希望能够访问安装了我的应用程序的组织中所有用户的联系人,事件和电子邮件。 问题是我不希望所有这些用户都必须授予我访问权限,我只希望组织的一名管理员为我的应用授予访问权限,然后能够检索所有用户所需的数据。
要测试一个组织,我以管理员身份登录并继续进行Oauth2身份验证以检索访问令牌,并在第一个请求(GET一个请求检索授权代码)中添加参数 prompt = admin_consent
使用此访问令牌,我可以访问管理员的数据(电子邮件,联系人,事件)
例如联系人
uri:https://outlook.office365.com/ews/odata/Users( adminemail )/通讯录
但不是此组织的其他用户使用此uri
的数据uri:https://outlook.office365.com/ews/odata/Users( useremail )/ Contacts
我唯一能做的就是为每个用户检索一个访问令牌,但它认为每个用户都必须授权访问该应用,但这非常麻烦。 所以,我没有看到什么启用参数prompt = admin_consent以及如何使用它。有人知道它的作用吗?
我的问题是:当一位管理员授予访问权限时,如何访问一个组织的所有用户的数据?
谢谢!
答案 0 :(得分:3)
谢谢你的提问!您感兴趣的方案(一旦管理员授予对列表的访问权限,访问组织的所有用户的数据的应用程序)尚不受支持,但在我们要添加的功能列表中优先级高。
[更新] Office 365邮件,日历和联系REST API支持应用访问租户中所有用户的数据。有关详细信息,请参阅Building Daemon or Service Apps with Office 365 Mail, Calendar, and Contacts APIs (OAuth2 client credential flow)。
方案提示= admin_consent用于,与您的方案不同。管理员同意仅表示管理员允许组织中的此应用程序在没有单个用户登录应用程序后看到同意屏幕。这个特殊的“我作为管理员代表我的所有用户同意此应用程序”由在授权请求期间传入的“prompt = admin_consent”参数触发。但是,这不允许应用程序为任何用户获取AccessTokens。每个用户仍然必须获取应用程序,登录,然后应用程序将访问授权端点并为登录用户获取Refresh / AccessToken。
如果您有任何疑问或需要更多信息,请与我们联系。
谢谢,
Venkat