2

我已成功使用 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 使 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 应用程序中创建的,而不是通过统一 API 创建的,因此这不是一个因素。

管理员可以使用 Office 365 中的权限来限制对统一 api 请求的访问吗?我在文档中看不到任何内容,但即使是这种情况,我也希望得到未经授权的响应,而不是内部服务器错误。

任何想法都非常感谢!

4

1 回答 1

1

对不起这个问题。所以我相信我们不小心提前推动了一项变更,而您在我们恢复变更之前成功地做到了这一点。我们正在通过 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 点进行更新之前)?

希望这可以帮助,

于 2015-10-19T01:57:13.937 回答