前回は、
UserStoreサービスに接続するためのクライアント
まずはユーザ認証をするために、
String userStoreUrl = "https://sandbox.evernote.com/edam/user";
THttpClient userStoreTrans = new THttpClient(userStoreUrl);
TBinaryProtocol userStoreProt = new TBinaryProtocol(userStoreTrans);
UserStore.Client userStore = new UserStore.Client(userStoreProt);
userStoreUrl = "https://sandbox.evernote.com/edam/user"
userStoreTransport = Thrift::HTTPClientTransport.new(userStoreUrl)
userStoreProtocol = Thrift::BinaryProtocol.new(userStoreTransport)
userStore = Evernote::EDAM::UserStore::UserStore::Client.new(userStoreProtocol)
Evernote APIの実行環境には、
EvernoteはThriftのBinaryProtocolを使用していますので、
UserStoreクライアントでのユーザ認証
次に、
AuthenticationResult authResult = null;
try {
authResult = userStore.authenticate(username, password, consumerKey, consumerSecret);
} catch (EDAMUserException ex) {
String parameter = ex.getParameter();
EDAMErrorCode errorCode = ex.getErrorCode();
if (errorCode == EDAMErrorCode.INVALID_AUTH) {
……
begin
authResult = userStore.authenticate(username, password, consumerKey, consumerSecret)
rescue Evernote::EDAM::Error::EDAMUserException => ex
parameter = ex.parameter
errorCode = ex.errorCode
if (errorCode == Evernote::EDAM::Error::EDAMErrorCode::INVALID_AUTH)
……
userStore.
ユーザ認証に失敗した場合は例外
認証が成功した場合は、
String authToken = authResult.getAuthenticationToken();
authToken = authResult.authenticationToken
NoteStoreサービスによるユーザデータの操作
ユーザのデータを操作するためには、
String noteStoreUrlBase = "https://sandbox.evernote.com/edam/note/";
User user = authResult.getUser();
String noteStoreUrl = noteStoreUrlBase + user.getShardId();
THttpClient noteStoreTrans = new THttpClient(noteStoreUrl);
TBinaryProtocol noteStoreProt = new TBinaryProtocol(noteStoreTrans);
NoteStore.Client noteStore = new NoteStore.Client(noteStoreProt);
noteStoreUrlBase = "https://sandbox.evernote.com/edam/note/";
user = authResult.user
noteStoreUrl = noteStoreUrlBase + user.shardId
noteStoreTransport = Thrift::HTTPClientTransport.new(noteStoreUrl)
noteStoreProtocol = Thrift::BinaryProtocol.new(noteStoreTransport)
noteStore = Evernote::EDAM::NoteStore::NoteStore::Client.new(noteStoreProtocol)
例:ノートブック一覧の表示
NodeStoreクライアントを使ってユーザのデータにアクセスする例として、
List notebooks = noteStore.listNotebooks(authToken);
for (Notebook notebook : notebooks) {
System.out.println("Notebook: " + notebook.getName());
}
notebooks = noteStore.listNotebooks(authToken)
notebooks.each { |notebook|
puts "Notebook: #{notebook.name}"
}
例:ノートの作成
新しいノートを作成する方法は次のようになります。
まずNoteオブジェクトを作り、
Noteのコンテンツに設定するのはENML
Note note = new Note();
note.setTitle("テストノート");
String content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">" +
"<en-note>新しいノートを作りました</en-note>";
note.setContent(content);
Note createdNote = noteStore.createNote(authToken, note);
System.out.println("GUID: " + createdNote.getGuid());
note = Evernote::EDAM::Type::Note.new()
note.title = "テストノート"
note.content = '<?xml version="1.0" encoding="UTF-8"?>' +
'<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">' +
"<en-note>新しいノートを作りました</en-note>"
createdNote = noteStore.createNote(authToken, note)
puts "GUID: #{createdNote.guid}"
これで一通り、
次回以降の連載では主にAndroidでの開発を例に説明していく予定です。しかし、
次回は、