我可以从evernote API获取笔记(真实内容,而不仅仅是元数据)。但是,调用notestore-> update()总是会给我一个EDAMUserException。
我的php代码如下,参数不言自明:
//add text to note
//if append=true then the text will be appended to the end, else it will be appended to the start
public function addToNote($new_content, $access_token, $note_store, $note_guid, $append = true){
$note = $note_store->getNote($access_token, $note_guid, true, false, false, false);
$note->content +="<en-note>Note updated</en-note>";
$note_store->updateNote($access_token, $note);
}
在我问到这里之前,我已经做了很多搜索,以下是我所知道的事情:
根据:https://dev.evernote.com/doc/articles/permissions.php它说有两种类型的api密钥,一种是基本访问,一种是完全访问,我有完全访问权限,这被证明没有异常被抛出在$ note_store-&gt; getNote()调用期间,我确实输出了该调用的数据,我实际上可以获得该注释的内容。
在与1相同的页面中:“某些API函数仅适用于官方Evernote应用程序和服务。这些函数在API参考中如此描述,如果调用,则抛出EDAMUserException,错误代码为PERMISSION_DENIED第三方应用程序。“我在这里阅读了API文档:https://dev.evernote.com/doc/reference/NoteStore.html#Fn_NoteStore_updateNote 它没有提到它默认被阻止。
答案 0 :(得分:0)
我想我弄清楚出了什么问题。 Evernote实际上有自己的DTD文档格式,如果&#34;内容&#34;注释的部分不是有效文档,则请求被拒绝。在我的情况下,它没有被拒绝,因为我的API密钥的访问级别,但因为&#34;内容&#34;我给的不是一个合适的印迹格式。 如果我设置:
$note->content='<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd"><en-note><div>testing complete!!!</div></en-note>';
然后该笔记将成功更新。 但是,对于获得此异常并使用正确格式的其他用户,最有可能: 1.您的api密钥没有完全访问权限,请求api密钥时选择完全访问权限。 2.通常你会开始测试他们网站的沙盒&#34;(https://sandbox.evernote.com)版本,你需要在沙盒网站上注册另一个帐户(你真正的evernote帐户不能携带结束)并用该帐户进行测试。如果您不这样做,您的帐户将不会存在于沙盒帐户中,您执行的任何操作都将无效。