Evernote API: 无法在沙盒服务器上同步链接笔记本的内容
Evernote API: can't sync the contents of a linked notebook on the sandbox server
我目前正在测试与 Evernote 服务执行完全同步的自定义应用程序。我正在使用 Evernote 的测试站点 sandbox.evernote.com
。一切顺利,直到我尝试在同一个测试服务器上创建第二个帐户以便与我的第一个帐户共享笔记本以测试链接笔记本内容的同步。
为了与链接笔记本的内容同步,我调用的 Evernote API 方法如下:
- authenticateToSharedNotebook - 有效,即 returns 笔记本的身份验证令牌,但是令牌的到期时间仅提前 1 小时。有点奇怪,但仍然可以用于测试。
- getLinkedNotebookSyncState - 也有效,returns 有效的同步状态。
- getLinkedNotebookSyncChunk - I call it with the linked notebook previously received from syncing the user's content, afterUSN = 0 (since this is the first sync of this linked notebook's contents), max entries = 50 (randomly picked value which works fine with getFilteredSyncChunk 从用户自己的帐户同步内容时的方法),仅完全同步 = true。该方法抛出
EDAMUserException
异常,表示 PERMISSION_DENIED parameter=authenticationToken
.
据我所知,我的开发人员的密钥是 full
类型之一,而不是 basic
- 我可以从我的应用程序中读取和更新沙箱中的注释,所以它是不是将密钥从 basic
升级到 full
.
的问题
如果那很重要,我在 C++/Qt 中使用非官方的 API implementation,但是,直到现在它的工作都很有魅力,它使用的代码是从 Thrift IDL 自动生成的文件,因此没有迹象表明问题出在客户端的 API 实现上。
如果 Evernote 的人能解释我收到此错误的原因以及如何解决此问题,以便我可以继续测试与链接笔记本的同步,我将不胜感激。
看来我明白问题出在哪里了:
- 我使用相同的
NoteStore
对象来同步用户自己的内容和来自链接笔记本的内容 - 如果我正确地将笔记存储 URL 设置为该对象,这可能没问题它对应于我正在尝试同步的链接笔记本。我没有那样做。现在我为用户自己的内容和每个链接的笔记本使用单独的 NoteStore
对象,每个对象都有自己适当的笔记存储 URL.
- 我在调用
getLinkedNotebookSyncChunk
时使用了错误的身份验证令牌:我使用了通过 authenticateToSharedNotebook
获得的令牌,而我本应使用 "regular" 用户自己的身份验证令牌。
我更改了这两件事,现在没有抛出异常,链接笔记本的同步块已正确下载。
我目前正在测试与 Evernote 服务执行完全同步的自定义应用程序。我正在使用 Evernote 的测试站点 sandbox.evernote.com
。一切顺利,直到我尝试在同一个测试服务器上创建第二个帐户以便与我的第一个帐户共享笔记本以测试链接笔记本内容的同步。
为了与链接笔记本的内容同步,我调用的 Evernote API 方法如下:
- authenticateToSharedNotebook - 有效,即 returns 笔记本的身份验证令牌,但是令牌的到期时间仅提前 1 小时。有点奇怪,但仍然可以用于测试。
- getLinkedNotebookSyncState - 也有效,returns 有效的同步状态。
- getLinkedNotebookSyncChunk - I call it with the linked notebook previously received from syncing the user's content, afterUSN = 0 (since this is the first sync of this linked notebook's contents), max entries = 50 (randomly picked value which works fine with getFilteredSyncChunk 从用户自己的帐户同步内容时的方法),仅完全同步 = true。该方法抛出
EDAMUserException
异常,表示PERMISSION_DENIED parameter=authenticationToken
.
据我所知,我的开发人员的密钥是 full
类型之一,而不是 basic
- 我可以从我的应用程序中读取和更新沙箱中的注释,所以它是不是将密钥从 basic
升级到 full
.
如果那很重要,我在 C++/Qt 中使用非官方的 API implementation,但是,直到现在它的工作都很有魅力,它使用的代码是从 Thrift IDL 自动生成的文件,因此没有迹象表明问题出在客户端的 API 实现上。
如果 Evernote 的人能解释我收到此错误的原因以及如何解决此问题,以便我可以继续测试与链接笔记本的同步,我将不胜感激。
看来我明白问题出在哪里了:
- 我使用相同的
NoteStore
对象来同步用户自己的内容和来自链接笔记本的内容 - 如果我正确地将笔记存储 URL 设置为该对象,这可能没问题它对应于我正在尝试同步的链接笔记本。我没有那样做。现在我为用户自己的内容和每个链接的笔记本使用单独的NoteStore
对象,每个对象都有自己适当的笔记存储 URL. - 我在调用
getLinkedNotebookSyncChunk
时使用了错误的身份验证令牌:我使用了通过authenticateToSharedNotebook
获得的令牌,而我本应使用 "regular" 用户自己的身份验证令牌。
我更改了这两件事,现在没有抛出异常,链接笔记本的同步块已正确下载。