【问题标题】:OneDrive for Business Thumbnails Using Microsoft Graph使用 Microsoft Graph 的 OneDrive for Business 缩略图
【发布时间】:2016-06-28 01:00:46
【问题描述】:

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

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

我有一个https://graph.microsoft.com 资源的访问令牌,除缩略图外,一切都运行良好。

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

[小] => 数组(

[身高] => 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 访问该 thumbnailContent url 的尝试都会返回错误。对于 curl,我在标题中提供了访问令牌。

我收到如下错误信息:

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":"访问被拒绝。您无权执行此操作或访问此资源。"}}

在解决此处所需的问题时,我们将不胜感激。

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

谢谢。

【问题讨论】:

  • 嗨,Ray - 我正在查看 GitHub 存储库以查看是否有任何问题,看起来确实存在。 7 天前的评论显示他们禁用了预先验证的网址。我会关注这个线程,也许会在其中添加一些 cmets。 github.com/OfficeDev/microsoft-graph-docs/issues/135
  • 谢谢,我看到了……我一直在尝试为每个缩略图 url 发送经过正确身份验证的请求,我想也许我需要一个共享点令牌,但没有成功。预认证的网址是唯一的选择吗?
  • 我也尝试过构建getpreview.ashx url,如这篇文章link 中所述,它可以工作,但我在第一次加载时遇到问题,它似乎还没有经过身份验证,但如果我从浏览器“查看图像”,则会触发身份验证步骤,我对我的会话有好处。我可能可以破解它来工作,但感觉还没有准备好生产,我依赖于那个 url 语法......

标签: office365api onedrive microsoft-graph-api office365-restapi


【解决方案1】:

Graph 开发人员向我们保证,未经身份验证的缩略图 URL 即将到来,根据此处发布的问题(我开始)github.com/OfficeDev/microsoft-graph-docs/issues/135。同时,您可以按照我在此处暗示的解决方法进行操作,看起来您正在尝试这样做。如您所述,您需要为 onedrive API 提供访问令牌,这与 Graph API 的访问令牌不同。您应该查看相关的OneDrive API documentation,但我认为归结为您要查找的“资源 ID”只是 OneDrive 的基本 URL,例如https://contoso-my.sharepoint.com/。您实际上可以从缩略图 URL 本身中解析出来。如果您碰巧使用 JavaScript 完成所有这些操作,我建议您查看 Adal.js(如果还没有的话)。

您应该能够使用您的 OneDrive API 访问令牌来发出 thumbnailContent 请求。如果您请求 responseTypeblob,则可以使用 FileReader.readAsDataURL(再次假设您使用 JavaScript)来获取可以位于图像标记中的数据 URL。

自从我查看所有这些内容以来已经有一段时间了,但这是我在该问题链接中发布时所采用的解决方法。希望对您有所帮助。

【讨论】:

  • 谢谢,Mike... 我能够使用您的回复中描述的资源 id 实现 javascript 方法,然后将该技术应用于我的 php 应用程序以下载和缓存缩略图服务器端以避免adal.js 所需的任何 CORS 问题或清单修改。再次感谢您的 github 帖子和此回复非常有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多