2016-12-06 5 views
0

evernote API에서 노트 (실제 컨텐츠, 메타 데이터가 아님)를 얻을 수 있습니다. 그러나 notestore-> update()를 호출하면 항상 EDAMUserException이 발생합니다. 내가 알고있는 것들을 여기에 이미 내가 여기에 질문하기 전에 검색을 많이 했어요했습니다Evernote php sdk로 Evernote 노트를 업데이트

//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); 
} 

및 :

    내 PHP 코드는 다음과 같습니다, 인수는 설명이 필요

  1. 에 따르면 : https://dev.evernote.com/doc/articles/permissions.php 그것은 두 가지 유형의 API 키가 있다고 말합니다. 하나는 기본 액세스이고 하나는 모든 액세스를위한 것이며, 나는 완전한 액세스 권한을가집니다. 이것은 $ note_store-> getNote 중에 예외가 발생하지 않았 음을 증명합니다) 호출을 호출하고 그 호출의 데이터를 출력 했으므로 실제로 메모의 내용

  2. "특정 API 함수는 공식 Evernote 응용 프로그램 및 서비스에서만 사용할 수 있습니다. 이러한 함수는 API 참조 서에 설명되어 있으며, 함수에 의해 호출 된 경우 PERMISSION_DENIED와 함께 EDAMUserException이 발생합니다. 타사 응용 프로그램. " 여기 API 문서를 읽었습니다 : https://dev.evernote.com/doc/reference/NoteStore.html#Fn_NoteStore_updateNote 기본적으로 차단된다는 언급이 없습니다.

+0

updateNote는 타사에 게서는 분명히 * 금지 *되어 있지 않습니다. 예외에 대한 errorCode 및 매개 변수를 인쇄 할 수 있습니까? 보통 더 많은 정보를 제공합니다. – akhaku

답변

0

내가 잘못 생각한 것 같습니다. Evernote는 실제로 자체 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 계정은 이월되지 않습니다). 그리고 해당 계정으로 테스트하십시오. 이 작업을 수행하지 않으면 계정이 샌드 박스 계정에 존재하지 않으며 수행 한 작업이 작동하지 않습니다.