我已经成功地使用Office 365统一API将我的多租SaaS应用程序链接到Office 365并返回统一组的文件。我正在使用ADAL库和统一API nuget包实现这一点。我们根据统一API预览发布说明在Azure AD应用程序中请求了以下权限(包括其他权限)-- Group.Read.All、Group.ReadWrite.All、Sites.Read.All、Sites.ReadWrite.All。我很欣赏ReadWrite使阅读变得不必要,但是我们增加了这两个设置,以尝试保护自己免受某些可能的预览问题的影响。
现在我们有了一个租户,他可以读取他们的组,但不能访问组中的文件。这在其他房客中很好。
当我们调试代码时,我们发现这一行抛出了一个空引用异常:
IPagedCollection<IItem> files = await _client.groups.GetByID(groupId).files.ExecuteAsync()
然后,我们将其分开,以检查是否收到了“确定”,即:
IGroup group = await _client.groups.GetById(groupId).ExecuteAsync()
因此,我们使用HTTP客户端发出相同的文件请求,以便从服务器获得更详细的响应:
这是返回状态代码500 -内部服务器错误和内容是‘对象引用没有设置为一个对象的实例’。不是很有帮助!
我见过一些线程,其中有些人遇到了类似的问题,权限没有被正确设置,但在我的例子中,我不明白为什么在一个Office 365租约中检索统一组文件的调用会很好,而在另一个租约中,当他们的权限由相同的Azure AD应用程序控制时,他们的权限就会完全相同。
这些组都是在Office 365 Web应用程序中创建的,而不是通过统一API创建的,因此这不是一个因素。
Office 365中是否有管理员可以用来限制对统一api请求的访问的权限?我在文档中看不到任何东西,但即使是这样,我也希望得到未经授权的响应,而不是内部服务器错误。
任何想法都非常感谢!
发布于 2015-10-19 01:57:13
对这件事很抱歉。因此,我相信我们意外地提前推动了一个改变,在我们恢复之前,你成功地做到了这一点。我们正在通过OneDrive API更新对文件的访问,这将导致严重的更改。您可以阅读更多关于这一点的内容,以及我们计划在10/19更新的/beta端点上的最新信息,这里是:http://dev.office.com/blogs/Update-2-on-Office-365-unified-API。更新后,访问文件将需要以下语法:/drive/root/children
注意事项:我们需要为此生成一个新的客户端库。您当前使用的更新将与此更新中断。我们希望在这一服务更新之后不久就能得到一个新的客户端库。
现在我不确定这到底是你偶然发现的,还是这是另一个问题。你能再试一次吗(在PDT下午12点10/19更新之前)?
希望这能帮上忙
https://stackoverflow.com/questions/33137089
复制相似问题