在 OneNote api 调用中附加 preAuthenticated=true 选项后无法呈现 OneNote 图像资源

Unable to render OneNote image resource after appending preAuthenticated=true option in OneNote api call

https://github.com/microsoftgraph/microsoft-graph-docs/issues/2624

我遇到了上述问题。

我正在尝试通过调用 https://graph.microsoft.com/v1.0/users/{userId}/onenote/pages/{pageId}/content?preAuthenticated=true[=14= 来保存带有图像引用的页面内容]

据此 - Downloading one note page with image content as HTML

通过在提取时附加“?preAuthenticated=true”,它会生成图像 public。

但是当我尝试渲染 html 时,它给了我 "Failed to load resource: the server responded with a status of 401 (Unauthorized)"。

官方文档好像有问题:Get OneNote content and structure with Microsoft Graph.

我们可以看到服务根URL是https://graph.microsoft.com/{version}/{location}/onenote/

但是在本页的任何示例中,URL 仍然是 https://www.onenote.com/api/v1.0/me/notes

目前,当您添加 ?preAuthenticated=true 时,您将获得此页面上的图像 URL:

https://graph.microsoft.com/v1.0/users('{userID}')/onenote/resources/{resourceID}/content?publicAuth=true&mimeType=image/png

但是当你尝试在浏览器中访问它时,你会得到 401 error Access token is empty

解决方法是将 URL 修改为:

https://www.onenote.com/api/v1.0/resources/{resourceID}/content?publicAuth=true&mimeType=image/png

然后你就会得到图像。

https://github.com/microsoftgraph/microsoft-graph-docs/pull/4339/files

我认为他们删除了对它的支持。

有点跑题了,但我想出了如何渲染图像。

https://docs.microsoft.com/en-us/graph/api/resource-get?view=graph-rest-1.0&tabs=http

当您调用 /onenote/pages/{id}/content 时,图像会引用这样的来源

src="https://graph.microsoft.com/v1.0/users({userId})/onenote/resources/{resourceId}/$value" 以及 data-src-type="image/jpeg"

向此端点发出获取请求,您将获取图像二进制文件,将二进制文件转换为 base64,然后通过将 src 替换为 base64 来呈现 html。