我已成功使用Office 365统一API将多租户SaaS应用程序链接到Office 365,并返回统一组的文件。我使用ADAL库和Unified API nuget包实现了这一目标。根据Unified API预览发行说明,我们已在Azure AD应用程序中请求了以下权限(除其他权限外)-Group.Read.All,Group.ReadWrite.All,Sites.Read.All,Sites.ReadWrite.All。我很感激ReadWrite使得Read不必要,但是我们添加了这两个集合以尝试保护自己免受某些可能的预览问题的影响。
现在,我们有一个可以读取其组但无法访问该组中文件的租户。这在其他租户中也可以正常工作。
调试代码时,我们发现此行引发了空引用异常:
IPagedCollection<IItem> files = await _client.groups.GetByID(groupId).files.ExecuteAsync()
然后,我们将其分离出来,以检查是否可以接收该组,它是:
IGroup group = await _client.groups.GetById(groupId).ExecuteAsync()
因此,我们使用HTTP客户端发出了相同的文件请求,以便我们可以从服务器获得更详细的响应:
https://graph.microsoft.com/beta/myOrganization/groups/[group_id_here]/files
这将返回状态码500-内部服务器错误,内容为“对象引用未设置为对象的实例”。不是很有帮助!
我见过一些关于人们遇到类似问题的问题,这些问题的权限设置不正确,但就我而言,我不明白为什么检索统一组文件的调用在一个Office 365租约中可以正常工作,而在他们的特权下不能在另一个租约中正常工作由相同的Azure AD应用程序控制,因此完全相同。
这些组都是在Office 365 Web应用程序中创建的,而不是通过Unified API创建的,因此这不是一个因素。
Office 365中是否有管理员可以用来限制对统一api请求的访问的权限?我在文档中看不到任何内容,但是即使是这种情况,我也希望得到未经授权的响应,而不是内部服务器错误。
任何想法表示赞赏!
对不起,这个问题。因此,我相信我们无意中提早进行了更改,并且您在恢复更改之前设法实现了这一目标。我们正在通过OneDrive API更新对文件的访问权限,这将导致重大更改。您可以在此了解更多信息,以及我们计划在10/19更新的/ beta端点上的最新信息,请访问:http : //dev.office.com/blogs/Update-2-on-Office-365-统一API。更新之后,访问文件将需要以下语法:https: //graph.microsoft.com/stagingBeta/microsoft.com/groups/ groupId / drive / root / children
注意:我们需要为此生成一个新的客户端库。您当前使用的版本将与此更新一起中断。我们希望在此服务更新后尽快推出新的客户端库。
现在,我不确定这是您偶然发现的,还是这是另一个问题。您可以重试一次吗(在我们于太平洋标准时间10/19下午12点进行更新之前)吗?
希望这可以帮助,
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句