印象笔记企业版

使用印象笔记企业版 API


印象笔记企业版为企业提供了收集、整理、共享企业信息的工具。我们使用了许多在印象笔记中已有的工具来打造这一产品,这样我们可以为用户提供一致和熟悉的使用体验。如果你还不清楚印象笔记企业版究竟是什么,请到我们的产品页获取大致的介绍。

使用印象笔记企业版 API 唯一需要的条件就是熟悉印象笔记云 API,尤其是笔记本共享功能。大多数用于访问印象笔记企业版数据的函数都跟印象笔记云 API 中相应的函数很相似,甚至很多时候它们就是一样的。

当然,也有许多函数和方法是印象笔记云 API 独有的。我们马上就会谈到它们,但首先让我们先来说一下印象笔记企业版的数据是如何存储和访问的。

理解印象笔记企业版的数据模型

当印象笔记的用户加入到企业版之后,他们实际上是用相同的登录信息创建了第二个印象笔记帐户。存储在用户的个人印象笔记帐户里和在印象笔记企业版帐户里的数据是存在于不同的物理位置的(shards)并且所有权属于不同实体。当一个非印象笔记企业版的用户向自己的帐户中添加数据的时候,他们可以任意处置他们的数据,包括永久删除它。对于企业版用户,则有些类似于在自己的帐户中链接到其他用户的笔记本:他不是此企业笔记本的所有者并且不能够删除它(不过他可以离开此笔记本)。如果他在企业笔记本中创建了一条笔记,他可以将它移动到废纸篓中,但是不能够永久删除它。删除笔记或笔记本是只为信息的所有者提供的功能。对于印象笔记企业版而言,信息的所有者是企业自身。

在此,我们再重申一下象笔记和印象笔记企业版之间的主要区别:

  • 印象笔记企业版的用户对于他们添加到企业笔记本中的数据,没有所有权。企业版笔记和笔记本是企业的财产,而不是创建它们的人的财产。
  • 企业版的数据跟个人版的数据通常存在于不同的 shard(物理服务器)中。
  • 企业版数据总是能通过企业版的 NoteStore 实例来访问。
在沙盒中创建和激活一个企业

要在我们的沙盒服务器上使用企业版 API,你需要通过下列步骤创建一个测试用的企业

  1. 访问沙盒的 创建企业帐户页面
  2. 选择年度账单作为支付手段,创建你的企业版帐户。
  3. 请求进行企业帐户审批
判断一个用户是否是企业中的一员

一个有效的印象笔记帐户并不一定意味着帐户所有者就是企业中的一员。要判定一个给定的用户是否与一个企业进行了关联,我们可以使用与该用户关联的 User接口查询 UserAccounting 实例的 businessId 成员。你可以通过调用 UserStore.getUser 来获取 User 实例(要求有一个有效的 OAuth token 或者开发者 token)


获取企业授权

一旦你的应用完成了对用户的印象笔记账号的授权(也就是说,你的应用有了一个开发者 token 或是通过 OAuth 获取的认证 token)并且你也已经确定用户是企业的一员,那么就可以调用 UserStore.authenticateToBusiness 来请求关联的企业对应用进行授权,需要将此 token 作为唯一的参数传入。如果抛出异常,那就说明用户没能正常完成授权。

使用上例中的返回值,我们可以通过 AuthenticationResult 实例来访问企业的详细信息。你可以查看对于此类型所有可用属性的详细定义。

针对本文而言,我们将主要关注 AuthenticationResult.authenticationToken 的值,我们后面会利用它进行 API 调用来操作用户的印象笔记企业版帐户。

注意: UserStore.authenticateToBusiness 产生的认证 token 的有效期限只有一个小时(相比而言,OAuth token 的有效期限是一整年)。这意味着你的应用需要频繁地使用 OAuth token 来对印象笔记企业版重新进行授权。由于企业版的认证 token 有效期很短,所以当你视图调用企业 API 的hih,你的应用很有可能会遇到错误码为 AUTH_EXPIREDEDAMUserException 异常;所以请确保你的代码处理了这种情况。


创建企业版 NoteStore 实例

在对企业版进行授权之后,你可以通过 NoteStore 查看笔记本、创建笔记等等。企业版 API 和普通的印象笔记 API 客户端使用一样的 NoteStore 类型,并且初始化的方式也一样:使用与该用户关联的 noteStoreUrl。你可以通过查询 UserStore.authenticateToBusiness 返回的AuthenticationResultnoteStoreUrl 属性来获取这个值。

一旦我们有了 NoteStore 的 URL,我们就可以用它创建 NoteStore 实例并开始调用 API:

列出企业版中用户可以访问的所有笔记本

使用此用户(而非企业)的 NoteStore 实例,你可以调用 NoteStore.listLinkedNotebooks 查看用户链接到自己帐户中的所有企业笔记本的列表:

在这里,我们请求此用户的所有关联笔记本(linked notebook)并检查其中是否有 businessId 成员——如果有的话,这个笔记本就是一个企业笔记本。

创建一个企业笔记本

在企业版中创建一个新笔记本(企业笔记本)跟在用户的个人帐户中创建一个笔记本几乎一样。只要创建一个 Notebook 实例并调用 NoteStore.createNotebook 创建笔记本即可。不同于个人笔记本的是,创建一个企业笔记本会自动创建一个 SharedNotebook,并对其创建者授予这个新笔记本的完整权限。新创建的笔记本不属于我们的用户——它属于企业——但是他们有笔记本中创建、更新、删除笔记还有共享笔记本给其他用户的权限。

与创建个人笔记本不同,创建一个新的企业笔记本还有第二个步骤。我们的应用必须创建一个新的 LinkedNotebook,将企业笔记本跟用户的个人帐户关联起来。首先,我们需要获取描述了当前用户访问、修改笔记本权限的 SharedNotebook 实例。在例子中我们取笔记本的 sharedNotebooks 的第一个元素。之后,利用 SharedNotebook 示例的 shareKey 的值(还有笔记本所有者的用户名、shard以及笔记本名称),我们可以创建一个 LinkedNotebook 的实例并为其赋值,然后通过调用 NoteStore.createLinkedNotebook 来将其链接到当前用户的帐户中。注意这个调用需要用到 OAuth token 而不是用户的企业版账号的 toekn,使用的是普通的 NoteStore client 而不是企业 NoteStore

这里是一个简单的例子,它创建了一个企业笔记本并将立即将其链接到创建者的帐户中:

假设一切正常,那么就可以通过印象笔记的客户端应用在用户的笔记本列表中看到这个企业笔记本了。

在企业笔记本中创建笔记

要在企业笔记本中创建笔记,你需要完成这几个步骤:

  1. 获取将企业笔记本链接到用户帐户的 LinkedNotebook
  2. 使用 LinkedNotebookshareKey 属性和用户的认证 token 来调用 NoteStore.authenticateToSharedNotebook。这个 API 函数会返回包含新 authenticationTokenAuthenticationResult 实例,这个认证 token 只用于跟目标 SharedNotebook 通信使用。
  3. 通过调用 getSharedNotebookByAuth 并传入上一步得到的认证 token,获取相应的 SharedNotebook 实例。
  4. 有了 SharedNotebook 实例的 notebookGuid 值,你可以调用企业版 NoteStorecreateNote,并传入我们之前定义的企业版认证 token。

如果你想看演示大部分基本的印象笔记企业版 API 功能的例子,你可以在 Github 上查看示例应用

需要帮助?

如果你在使用印象笔记企业版 API 的过程中遇到了问题并需要协助,请移步至开发者支持页面。