OneNote 开发

适用于:OneDrive 上的消费者笔记本 | Office 365 上的企业级笔记本

OneNote 是一款流行的笔记记录工具,可在线和在多个移动和平板电脑平台上使用。 通过将您的应用与 OneNotes 集成,将让在您优选的平台上创建功能强大的应用变得更为便捷,同时覆盖全球数百万用户。

OneNote 示例页面。

利用 OneNote 的笔记本、部分和页层次结构以及易于使用的 API,帮助您的用户规划和组织想法和信息。

备注

当您使用 OneNote API 时,您需同意 Microsoft API 使用条款

平台概述

OneNote 服务基于 Microsoft 云运行,并提供一个 RESTful 界面用于编程访问 OneNote 内容。 OneNote API 轻量且简单 — 它基于 JSON、HTML 和 OData 构建,因此可以用于支持 HTTP 请求的任何语言或平台。

以下是 OneNote API 开发堆栈的简单视图。

适用于各种平台的 OneNote 应用程序开发堆栈。 应用程序使用 OAuth 2.0 访问 OneNote 内容。

首先,您的用户必须经过身份验证并授予您应用的访问权限。 然后,您将获得用于与 OneNote 内容交互的访问令牌。 除了支持 OneNote 资源的 CRUD 外,API 还提供了诸如光学字符识别 (OCR)、全文搜索和名片提取等功能。

提示

您可以使用 SDK 简化认证过程。

使用 OneNote API

要使用 OneNote API,请将 HTTP 请求发送到 OneNote 服务根 URL 的特定端点:

https://www.onenote.com/api/{version}/{location}/notes/...

您可以使用 OneNote API 执行诸如在个人、站点和分组笔记本中的创建、查看和管理页面操作。 为了让您了解 API 的工作原理,这里有一个简单的 POST 请求,在当前用户的默认笔记本中创建一个页面。

POST https://www.onenote.com/api/v1.0/me/notes/pages

Authorization: Bearer {token}
Content-Type: text/html; charset=utf-8
Accept: application/json
 ...

<!DOCTYPE html>
<html>
    <head>
    <title>My new OneNote page</title>
    <meta name="created" content="2015-09-9T12:45:00.000-8:00"/>
    </head>
    <body>
        <p>This is a simple HTML page.</p>
    </body>
</html>

如果成功,请求将返回以下响应 — 在这种情况下,将以 JSON 格式显示新页面的 OData 表示。

HTTP/1.1 201 Created
Location:https://www.onenote.com/api/v1.0/me/notes/pages/0-37e6dad...
X-CorrelationId:8943c159-ee49-4c71-8cd0-ebf0861d07a6
Date:Sun, 09 Aug 2015 21:36:40 GMT
Content-Type:application/json; odata.metadata=minimal; odata.streaming=true
 ...

{
  "@odata.context": "https://www.onenote.com/api/v1.0/$metadata#me/notes/pages/$entity",
  "title": "My new OneNote page",
  "createdByAppId": "WLID-0000000048219837",
  "links": {
    "oneNoteClientUrl": {
      "href": "onenote:https://d.docs.live.net/73dbaf9b..."
    },
    "oneNoteWebUrl": {
      "href": "https://onedrive.live.com/redir.aspx?cid=73dbaf9b..."
    }
  },
  "contentUrl": "https://www.onenote.com/api/v1.0/me/notes/pages/0-37e6dad.../content",
  "lastModifiedTime": "2015-09-09T12:45:00Z",
  "id": "0-37e6dad8c6eb489294656ad878431666!209-73DBAF9B7E5C4B4C!153",
  "self": "https://www.onenote.com/api/v1.0/me/notes/pages/0-37e6dad...",
  "createdTime": "2015-09-09T12:45:00Z"
}

查看创建页面,了解有关 POST 页面的更多要求。

为什么要创建 OneNote 应用?

集成 OneNote 以创建人们喜欢的应用程序。 您可以使用 OneNote API 创建和管理 OneNote 笔记本中的笔记、列表、图片、文件等内容。

收集并整理笔记和想法

将 OneNote 用作画布,用户可以在其中添加和排列他们的内容。 OneNote API 可以轻松编写应用程序,以便学生可以记录笔记和开展研究,与家人分享计划和想法,让购物者分享照片 — 所有让人迸发浓厚兴趣的事情。 应用可以捕获用户所需的信息,将其发送到 OneNote,然后帮助用户管理这些信息。

以多种格式捕获信息

捕获 HTML、嵌入的图像(源自本地或公共 URL)、视频、音频、电子邮件和其他常见的文件类型。 OneNote 甚至还能够以快照的形式呈现网页和 PDF 文件。 OneNote API 支持 OneNote 页面布局的一组标准 HTML 和 CSS,因此,用户可以使用表、内嵌图像和基本格式化获取所需的外观。

使用 OneNote 生态系统增强核心方案

了解 OneNote 其他强大的功能。 该 API 在图像上运行 OCR,支持全文搜索、自动同步客户端、处理图像和提取名片捕获、在线产品和食谱列表。 针对笔记和轻型媒体,在云中将 OneNote 用作数字存储器,或特定于某些领域的数据馈送源。

服务于所有主要平台上的数百万 OneNote 用户

使用 OneNote 提高应用程序使用率。 OneNote 预先安装在新的 Windows 设备上,可用于主流平台,在 Web 上以 OneNote Online 形式提供,并且作为 Office 365 — 的有机组成部分,在全世界有超过 100 万的 OneNote 活跃用户。 当您利用功能丰富的 OneNote 环境发布应用程序时,可以发掘跨平台的巨大市场潜力。

开始使用 OneNote API

使用示例和教程快速开始编码,试用我们的交互式控制台,或者更深入地阅读我们的文档。

OneNote 示例和教程

这些示例和教程显示不同的平台 上使用 OneNote API 的基本知识(请参阅所有我们 示例 GitHub) 。

平台 示例和教程
iOS iOS-REST-API-Explorer(仅限 MSA)
教程
Windows OneNoteAPISampleWinUniversal
Android Android-REST-API-Explorer
PHP OneNoteAPISamplePHP (仅限 MSA)
Node.js OneNoteAPISampleNodejs (仅限 MSA)
Ruby OneNoteAPISampleRuby (仅限 MSA)
ASP.NET MVC 教程(仅适用于 Azure AD)

*MSA = Microsoft 帐户身份验证,AAD = Azure Active Directory 身份验证

操作指南和概念介绍

当您准备深入了解时,请浏览我们的操作指南和概念介绍,详细了解您可以使用 OneNote 进行的操作。

适用于 OneNote 开发的 SDK

OneNote 应用程序可以使用 OneDrive API SDK 获取对 OneNote API 的所有请求所需的访问令牌。 SDK 使你可以更轻松地进行身份验证。 只需提供身份信息并集成一些调用,SDK 即可处理登录和同意、获取、存储以及刷新令牌的所有方面。 然后,可以对 OneNote API 进行 REST 调用。 我们的 iOS 教程显示如何在 OneNote 应用程序中使用 SDK。

所有版本的 SDK 都支持 Microsoft 帐户身份验证(适用于消费者笔记本),有一些版本还支持 Azure Active Directory(适用于企业笔记本)。 参见 OneDrive 文档,了解当前支持的平台列表。

备注

OneDrive API SDK 取代了 Live SDK。 Live SDK 已弃用,但将继续支持使用它的现有 OneNote 应用程序。 对于新开发,请使用 OneDrive API SDK。

在某些时候,我们可能会提供既处理身份验证又支持对 OneNote API 的本地调用的库,但目前请使用 OneDrive API SDK。

或者,企业应用程序可以使用 Active Directory 身份验证库 (ADAL) 访问 Office 365 和 SharePoint 托管的笔记本。 如果平台没有可用的 SDK,或者希望加强对身份验证过程的控制,则可以考虑直接使用 ADAL。 我们的 ASP.NET MVC 教程显示如何在 OneNote 应用程序中使用 ADAL。

重要

要与 OneNote 内容和资源进行交互,应始终使用 OneNote API。 不要使用 OneDrive API。

有关详细信息,请参阅 OneNote 资源

与我们联系

我们不断扩展和改进,敬请持续关注。 我们总是希望聆听您的问题和意见,帮助您解决问题并时刻掌握最新动态。 您可以通过以下方式与我们联系:

变化

以下条目着重说明过去一年对 OneNote API 和文档所做的更改:

2016 年 7 月

2016 年 5 月

2016 年 3 月

  • 发布 GET /pages/{id}/content?preAuthenticated=true 到生产。 在preAuthenticated=true 查询字符串选项用于检索页面内容时,输出 HTML 包含页面上图像资源的公共 URL。 这些预认证的网址有效期为一小时。 查看一次性公共资源认证
  • 发布 PATCH /sections/{id} 到生产。 这使您可以在消息正文中通过发送一个应用程序/ JSON 来重命名一个模块,如下所示: { "name": "New section name" }

2016 年 2 月

2016 年 1 月

2015 年 11 月

  • 对Office 365笔记本的支持已从预览转移到生产。 包括对SharePoint网站和 Office 365 分组的笔记本支持,以及访问组织级别笔记本所需的Notes.Read.AllNotes.ReadWrite.All 权限。
  • 发布POST /sectiongroups/{id}/sectionsPOST /notebooks/{id}/sectiongroupsPOST /sectiongroups/{id}/sectiongroups到生产。
  • 发布CopyNotebookCopyToNotebookCopyToSectionGroupCopyToSection到Office 365笔记本的生产。
  • 向页面添加了parentSectionparentNotebook导航属性。 默认GET pages 查询扩展 parentSection 并选择模块名称ID属性。
  • 向页面添加了等级顺序属性。 要检索这些属性,请在模块或特定页面的页面集合查询中包含 pagelevel 参数。 示例:GET ../sections/{id}/pages?pagelevel=trueGET ../pages/{id}?pagelevel=true
  • 笔记本名称中的最大字符数从50更改为128。
  • 调整了操作指南和概念文档。 新文档涵盖了消费者和企业OneNote API。

2015 年 9 月

  • GET pages 查询中使用 top 字符串选项返回的最大页面数量从 500 更改为 100。

2015 年 7 月

2015 年 6 月

另请参阅