2016-12-06 72 views
0

我可以從evernote API獲取筆記(真實內容,不僅僅是元數據)。但是,調用notestore-> update()總是會給我一個EDAMUserException。用Evernote Evernote更新Evernote筆記sdk

我的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); 
} 

我已經做了很多之前,我在這裏問搜索,並在這裏被我知道的事情:

  1. 根據:https://dev.evernote.com/doc/articles/permissions.php它說有兩種類型的api鍵,一種是基本訪問權限,一種是完全訪問權限,我有完全訪問權限,這一點在$ note_store-> getNote( )調用,而且我確實輸出了來自該調用的數據,我實際上可以獲得該調用筆記的內容。

  2. 在與1相同的頁面中:「某些API函數僅適用於官方Evernote應用程序和服務,這些函數在API參考中被描述,並且如果被調用時會拋出EDAMUserException和錯誤代碼PERMISSION_DENIED第三方應用程序「。我在這裏閱讀API文檔:https://dev.evernote.com/doc/reference/NoteStore.html#Fn_NoteStore_updateNote 它沒有提到它在默認情況下被阻止。

+0

更新注意絕對*不*第三方封鎖。你能打印出異常的errorCode和參數嗎?這些通常提供更多信息。 – akhaku

回答

0

我想我弄明白了什麼是錯的。印象筆記實際上有它自己的DTD文檔格式,如果筆記的「內容」部分不是有效的文檔,那麼請求被拒絕。在我的情況下,它沒有被拒絕,因爲我的API密鑰的訪問級別,但因爲我給的「內容」不是一個合適的evernote格式。 如果我設置:

$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.通常情況下,您將開始在其「沙盒」(https://sandbox.evernote.com)版本的網站上進行測試,您需要在沙盒網站上註冊另一個帳戶(您真正的evernote帳戶不會繼續)並使用該帳戶進行測試。如果您不這樣做,您的帳戶將不會存在於沙盒帳戶上,您所做的任何操作都將無法工作。

相關問題