使用 Microsoft Graph 的 OneDrive for Business 缩略图

OneDrive for Business Thumbnails Using Microsoft Graph

我使用 https://graph.microsoft.com/v1.0/me/drive/root/microsoft.graph.search 端点成功地 return 从用户的 OneDrive for Business 帐户搜索结果。

我在我们的应用程序内的联合搜索中使用这些结果,并希望在可用时使用 api 呈现每个项目的缩略图。

我有 https://graph.microsoft.com 资源的访问令牌,除缩略图外一切正常。

我能够取回缩略图 collection 数据,例如:

[小] => 数组(

[身高] => 350

[宽度] => 266

[url] => https://xxxxxxxxxxx-my.sharepoint.com/personal/xxxxxxxxxxxxxxxxx_onmicrosoft_com/_api/v2.0/drive/items/{item id}/thumbnails/0/small/thumbnailContent )

任何直接在 img 标签中或通过 curl return 访问缩略图内容 url 的尝试都会出错。对于 curl,我在 header.

中提供访问令牌

我收到如下错误信息:

HTTP/1.1 403

X-MSDAVEXT_Error: 917656;访问+拒绝。+之前+打开+文件+in+this+location%2c+you+must+first+browse+to+the+web+site+and+select+the+option+to+login+自动地。

{"error":{"code":"-2147024891, System.UnauthorizedAccessException","message":"Access denied. You do not have permission to perform this action or access this resource."}}

如能帮助解决此处的问题,我们将不胜感激。

我已阅读我可能需要共享点令牌而不是图形令牌。如果是这样的话,我似乎无法弄清楚如何获取请求必要的共享点令牌所需的资源 ID。

谢谢。

Graph 开发人员向我们保证,未经授权的缩略图 URL 即将到来,根据此处发布的问题(我开始)github.com/OfficeDev/microsoft-graph-docs/issues/135. In the meantime, you can follow the workaround that I hinted at there, which it looks like you're attempting to do. As you noted, you'll need to supply an access token for the onedrive API, which is not the same as an access token for the Graph API. You should check out the relevant OneDrive API documentation,但我认为归根结底就是这种情况您正在寻找的 "resource ID" 只是您的 OneDrive 的基础 URL,例如https://contoso-my.sharepoint.com/。实际上,您可以从缩略图 URL 本身中解析它。如果您碰巧从 JavaScript 开始执行所有这些操作,我建议您查看 Adal.js(如果您还没有的话)。

您应该能够使用您的 OneDrive API 访问令牌来发出缩略图内容请求。如果您请求 blobresponseType,则可以使用 FileReader.readAsDataURL(再次假设您在 JavaScript 中)来获取数据 URL坐在图片标签中。

自从我查看所有这些内容以来已经有一段时间了,但这是我在那个问题 link 中发帖时一直在使用的解决方法。希望对你有帮助。