首页 > 解决方案 > Evernote SDK Java:SHARD_UNAVAILABLE 同时对共享笔记本进行身份验证

问题描述

我正在尝试对共享笔记本进行身份验证以从中提取笔记。但我收到带有错误代码的 EDAMSystemException:“SHARD_UNAVAILABLE”。调试的时候发现我账号的 ShardId 和共享笔记本的 ShardId 不一样。在沙盒帐户中进行测试时从未发生过这种情况(目前在生产中进行测试)。下面是代码:

List<LinkedNotebook> linkedNotebooks = noteStore.listLinkedNotebook();
for(LinkedNotebook linkedNotebook: linkedNotebooks){
    String sharkey = linkedNotebook.getShareKey();
    String share_token = noteStore.authenticateToSharedNotebook(sharekey).getAuthenticationToken(); 
    System.out.println("Share Token:" +shareToken)
}

如果有人帮助我解决这个问题,那就太好了。

标签: javaevernote

解决方案


您需要使用特定于该链接笔记本的笔记存储客户端对象对共享笔记本进行身份验证,而不是您正在使用的默认对象。笔记存储客户端“指向”特定笔记存储并且只能访问该存储上的数据。用户自己的所有个人数据都保存在一个便笺存储中,这就是您在那里创建的主要便笺存储客户端noteStore

访问每个链接的笔记本需要创建一个新的笔记存储客户端对象,该对象是链接的笔记本所在位置的“客户端”。在您拥有的对象内部有足够的信息来执行此操作LinkedNotebook,但还有几个额外的步骤。

您可能想看看这个问题/答案。您可以使用 LinkedNotebook 对象中的信息来创建一个新的笔记存储客户端,该客户端指向相应的共享笔记本所在的位置。然后使用笔记存储对那里的共享笔记本进行身份验证。简而言之:您将从链接的笔记本记录中获取便笺存储 URL,然后使用该 URL 加上您现有的身份验证令牌为共享笔记本创建一个新的便笺存储客户端并对其进行身份验证。

语法(和复杂性)可能因您的特定平台和 SDK 版本而异。也许另请参阅此页面以获得一些概念性帮助。


推荐阅读