1

GET 値に基づいて Evernote にメモを投稿するスクリプト (PHP サンプル アプリをベースとして使用) を開発しようとしています。

これを functions.php の listNotebooks() の最後に挿入すると

$note_obj = new Note(array(
                'contents' => $note_contents,
                'title' => $title
                ));

500 エラーをスローします。(私のコードでは、$title と $note_contents は以前に定義されています。PHP API の適切なドキュメントを探すのに多くの時間を費やしましたが、存在しないようです。このトピックに関する情報をいただければ幸いです。

更新: API が PHP 名前空間を使用していることに気付きませんでした: これにより、問題が修正されました:

//import Note class
use EDAM\Types\Note;
use EDAM\Types\NoteAttributes;
use EDAM\NoteStore\NoteStoreClient;

メモを追加するコードはまだ機能しませんが、解決したらここに投稿します。

4

1 に答える 1

2

これらのクラスをインポートする必要があります:

//import Note class
use EDAM\Types\Note;
use EDAM\Types\NoteAttributes;
use EDAM\NoteStore\NoteStoreClient;

これにより、新しいメモが定義されます。

       $noteAttr = new NoteAttributes();
                $noteAttr->sourceURL = "http://www.example.com";
                $note = new Note();
                $note->guid = null;
                $note->title = "My Title";
                $note->content = '<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml.dtd"><en-note>My Content</en-note>';
                $note->contentHash = null;
                $note->contentLength = null;
                $note->created = time()*1000;
                $note->updated = time()*1000;
                $note->deleted = null;
                $note->active = null;
                $note->updateSequenceNum = null;
                $note->notebookGuid = null;
                $note->tagGuids = null;
                $note->resources = null;
                $note->attributes = $noteAttr;
                $note->tagNames = null;
                addNote($note);

この関数は新しいメモを追加します:

function addNote($newnote) {
    global $noteRet;
    if (empty($noteRet)) {
        define("noteStoreHost", "sandbox.evernote.com");
define("noteStorePort", "80");
define("noteStoreProto", "https");
define("noteStoreUrl", "edam/note/");
            $noteStoreTrans = new THttpClient(noteStoreHost, noteStorePort, noteStoreUrl . $_SESSION['shardId'], noteStoreProto);
            $noteStoreProt = new TBinaryProtocol($noteStoreTrans);
            $noteStore = new NoteStoreClient($noteStoreProt, $noteStoreProt);
            $noteRet = $noteStore->createNote($_SESSION['accessToken'], $newnote);

    return $noteRet;
}
}
于 2013-05-22T17:06:17.047 に答える