JS SDK,获取 SharedNotebooksList 时出现 Thrift 错误代码 12

Posted

技术标签:

【中文标题】JS SDK,获取 SharedNotebooksList 时出现 Thrift 错误代码 12【英文标题】:JS SDK, Thrift error code 12 when getting SharedNotebooksList 【发布时间】:2018-11-17 01:06:14 【问题描述】:

这是我第一次使用印象笔记, 就像JS SDK 中给出的示例一样,我使用从 OAuth 获得的令牌创建了我的客户端,并获得了当前用户的所有笔记本,所以这对我有好处。

但我遇到了一个我无法理解的问题,当我使用共享存储的任何方法时,它会引发 Thrift 异常,错误代码为 12,并在消息中提供分片 ID。

我知道 12 错误代码是分片暂时不可用.. 但我知道这是另一回事,因为它不是暂时的……

我有一个完全访问权限的 api 密钥,它可以与笔记商店一起使用,我错过了什么吗?

// This is the example in the JS SDK    
var linkedNotebook = noteStore.listLinkedNotebooks()
.then(function(linkedNotebooks) 
   // just pick the first LinkedNotebook for this example
   return client.getSharedNoteStore(linkedNotebooks[0]);
   ).then(function(sharedNoteStore) 
   // /!\ There is the problem, throw Thrift exception !
      return sharedNoteStore.listNotebooks().then(function(notebooks) 
         return sharedNoteStore.listTagsByNotebook(notebooks[0].guid);
      ).then(function(tags) 
   // tags here is a list of Tag objects
   );
);

【问题讨论】:

【参考方案1】:

这似乎是 SDK 的错误。我创建了一个 PR (https://github.com/evernote/evernote-sdk-js/pull/90)。

您可以自己使用 authenticateToSharedNotebook 来解​​决此问题。

const client = new Evernote.Client( token, sandbox );
const noteStore = client.getNoteStore();
const notebooks = await noteStore
  .listLinkedNotebooks()
  .catch(err => console.error(err));
const notebook = notebooks.find(x => x.guid === guid);
const  authenticationToken  = await client
  .getNoteStore(notebook.noteStoreUrl)
  .authenticateToSharedNotebook(notebook.sharedNotebookGlobalId);
const client2 = new Evernote.Client(
  token: authenticationToken,
  sandbox
);
const noteStore2 = client2.getNoteStore();
const [notebook2] = await noteStore2.listNotebooks();
noteStore2.listTagsByNotebook(notebook2.guid)

【讨论】:

以上是关于JS SDK,获取 SharedNotebooksList 时出现 Thrift 错误代码 12的主要内容,如果未能解决你的问题,请参考以下文章

微信 JS-SDK 开发

Paypal JS SDK 和 WebHooks - 获取付款人详细信息

微信JS-SDK之地理位置的获取与在线导航,集成百度地图实现在线地图搜索

微信JS-SDK获取signature签名以及config配置

微信开发:对接JS-SDK微信内置地图获取当前位置

微信js-sdk调用