我使用https://graph.microsoft.com/v1.0/me/drive/root/microsoft.graph.search端点成功从用户的OneDrive for Business帐户返回搜索结果。
我在我们的应用程序中使用联合搜索中的结果,并希望使用api为每个项目提供缩略图(如果可用)。
我有https://graph.microsoft.com资源的访问令牌,除缩略图外一切正常。
我可以恢复缩略图集合数据,例如:
[small] =>阵列(
[height] => 350
[width] => 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网址。对于卷曲,我在标题中提供访问令牌。
我收到错误信息,如:
HTTP / 1.1 403
X-MSDAVEXT_Error:917656;访问+拒绝。+前+开放+文件+在+这个+位置%2C +你必须+ + +首先浏览+至+ +的网络+现场+和+选择+的+选项+到+登录+自动。
{“error”:{“code”:“ - 2147024891,System.UnauthorizedAccessException”,“message”:“访问被拒绝。您无权执行此操作或访问此资源。”}}
在解决此处所需的内容时,我们将不胜感激。
我已阅读过我可能需要一个sharepoint令牌而不是图形令牌。如果是这种情况,我似乎无法弄清楚如何获取我需要请求必要的sharepoint令牌的资源ID。
谢谢。
答案 0 :(得分:0)
图表开发人员向我们保证,根据此处发布的问题(我已经开始)github.com/OfficeDev/microsoft-graph-docs/issues/135,未提供的缩略图网址即将推出。与此同时,您可以按照我在那里暗示的解决方法,看起来您正在尝试这样做。如您所述,您需要为onedrive API提供访问令牌,这与Graph API的访问令牌不同。您应该查看相关的OneDrive API documentation,但我认为这可归结为"资源ID"您正在寻找的只是OneDrive的基本网址,例如https://contoso-my.sharepoint.com/
。实际上,你可以从缩略图URL本身解析它。如果您碰巧是通过JavaScript完成所有这些工作,我建议您查看Adal.js,如果您还没有。
您应该可以使用OneDrive API访问令牌来发出thumbnailContent请求。如果您请求responseType
blob
,则可以使用FileReader.readAsDataURL
(再次假设您使用JavaScript)来获取可以位于图片代码中的数据网址。
自从我看了这一切以来已经有一段时间了,但这是我在发布该问题链接时工作的解决方法。希望它有所帮助。