java - 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)
}
如果有人帮助我解决这个问题,那就太好了。
解决方案
您需要使用特定于该链接笔记本的笔记存储客户端对象对共享笔记本进行身份验证,而不是您正在使用的默认对象。笔记存储客户端“指向”特定笔记存储并且只能访问该存储上的数据。用户自己的所有个人数据都保存在一个便笺存储中,这就是您在那里创建的主要便笺存储客户端noteStore
。
访问每个链接的笔记本需要创建一个新的笔记存储客户端对象,该对象是链接的笔记本所在位置的“客户端”。在您拥有的对象内部有足够的信息来执行此操作LinkedNotebook
,但还有几个额外的步骤。
您可能想看看这个问题/答案。您可以使用 LinkedNotebook 对象中的信息来创建一个新的笔记存储客户端,该客户端指向相应的共享笔记本所在的位置。然后使用该笔记存储对那里的共享笔记本进行身份验证。简而言之:您将从链接的笔记本记录中获取便笺存储 URL,然后使用该 URL 加上您现有的身份验证令牌为共享笔记本创建一个新的便笺存储客户端并对其进行身份验证。
语法(和复杂性)可能因您的特定平台和 SDK 版本而异。也许另请参阅此页面以获得一些概念性帮助。
推荐阅读
- c++ - C++ 在使用 system() 和 while 时会忽略 if 语句
- homebrew - 安装过程中找不到 LICENSE.txt
- json - Swift4 UITableView:JSON数据加载正确但在赋值时抛出错误
- php - 通过 tor 的 file_get_contents
- node.js - 创建一个使用多部分表单数据发送响应的 Nodejs 服务器
- javascript - 如何在 vscode 中为我的 javascript 网页设置“去定义”?
- html - html5 2 图像内部部分仅包含 css
- c# - 尝试在 C# 中重写以下算法,该算法基于一个公共键合并两个数组
- javascript - 计算按键中的值
- two-way-binding - 单向绑定是否意味着没有使用 setTimeout 函数的观察者?