2016-12-06 7 views
0

Я могу получать заметки (реальное содержимое, а не только метаданные) из API-интерфейса Evernote. Однако вызов notestore-> update() всегда дает мне исключение EDAMUserException.Обновление заметки Evernote с помощью Evernote php 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

updateNote определенно * не * заблокирован для третьих лиц. Вы можете распечатать код ошибки и параметр для исключения? Обычно они предоставляют больше информации. – akhaku

ответ

0

Я думаю, что я понял, что случилось. Evernote имеет собственный формат документа DTD, если раздел «содержание» заметки не является допустимым документом, тогда запрос отклоняется. В моем случае это не было отказано, потому что уровень доступа к API-интерфейсу API, но потому, что «контент», который я дал, не был надлежащим форматом evernote. если я устанавливаю:

$note->content='<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd"><en-note><div>testing complete!!!</div></en-note>'; 

Тогда нота будет успешно обновлена. Тем не менее, для других пользователей, получающих это исключение и использующих правильный формат, это наиболее вероятно: 1.your ключ api не имеет полного доступа, выберите вариант полного доступа, когда вы запрашиваете ключ api. 2. Обычно вы должны начать тестирование на «песочнице» (https://sandbox.evernote.com) версии своего сайта, вам нужно зарегистрировать другую учетную запись на изолированном сайте (вы не ведете учетную запись Evernote) и протестируете эту учетную запись. Если вы этого не сделаете, ваша учетная запись не будет существовать в изолированной учетной записи, и все, что вы сделаете, не будет работать.

 Смежные вопросы

  • Нет связанных вопросов^_^