そして、多分あなたは、私のように、それらを結合したかったです。
Evernote Cloud APIにアクセスするC ++ / Qtでプログラムを作成するために、このような組み合わせを実装しようとした場合、これが軽度の言い方をすれば自明ではないことを既に知っています。 C ++の場合、Evernoteの作成者は、Thrift コンパイラーによって生成されたファイルのみを提供します 。 それらから、少なくとも何らかの形で機能する何か-月に関しては、そして残念なことに、決して直線ではありません。
私はこの方法で行ったのですが、この思い出に残る旅の結果によると、この方法で人々を送ることはあまり人道的ではないと判断しました。 結局、私は自分のライブラリを書き、それをGitHubに投稿しました。
QEverCloudがEvernote SDKよりも優れているのはなぜですか?
- Qtのみに依存します。 コンパイル時にタンバリンで踊ることはできません。
- ライブラリインターフェイスは、技術的な詳細を可能な限り控えています。 それを使用することは可能な限り簡単です。
- OAuthによる認証が実装されています。
- QtNetworkはHTTPクライアントの実装に使用されるため、HTTPプロキシサポートに問題はありません。
使用例として、デフォルトでメモ帳にテストノートを作成する簡単な小さなプログラムを示します。
#include <QCoreApplication> #include <QTextStream> #include <例外> #include <QEverCloud.h> 名前空間qevercloudを使用します。 int main(int argc、char * argv []) { QCoreApplication a(argc、argv); QTextStream cout(stdout); { NoteStore * ns =新しいNoteStore(&a); //開発者トークンをここに貼り付けます // https://www.evernote.com/api/DeveloperToken.action ns-> setAuthenticationToken( "S = s41:U = 427a0c:E = 14761d37b39:C = 1400a224f39:P = 1cd:A = en-devtoken:V = 2:H = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); // NoteStoreのURLを見つけます ns-> setNoteStoreUrl( "https://www.evernote.com/shard/xxx/notestore"); 注注; note.title = "テストノート"; note.content = QString( "<?xml version = \" 1.0 \ "encoding = \" UTF-8 \ "?> \ n") + "<!DOCTYPE en-note SYSTEM \" http://xml.evernote.com/pub/enml2.dtd \ "> \ n" + "<en-note>" + "<b>彼はくまのプーさんの世界に住んでいます!</ b> <br /> <br /> <p>うーん、<a href = \" https://github.com/mgsxx/QEverCloud \ "> QEverCloud </a>は引き続き機能します... </ p>" + "</ en-note>"; ns-> createNote(注); } catch(const std :: exception&e){ cout << "例外が発生しました:" << e.what()<< endl; 1を返します。 } catch(...){ cout << "不明な例外が発生しました!" << endl; 1を返します。 } 0を返します。 }
開発者トークンは個人プログラムにとって非常に便利ですが、より深刻なプログラムの場合、OAuthを介して認証を取得するにはトークンとNoteStore URLが必要です。 QEverCloudを使用すると、これは簡単に行えます。
#include <QEverCloudOAuth.h> ... // consumerKeyとconsumerSecretの取得:https://dev.evernote.com/doc/、GET AN API KEYボタン EvernoteOAuthDialog d(consumerKey、consumerSecret、 "sandbox.evernote.com"); d.setWindowTitle( "Evernoteログイン"); if(d.exec()!= QDialog :: Accepted){ QMessageBox :: critical(0、 "Error"、d.oauthError()); } else { QString authenticationToken = d.oauthResult()。AuthenticationToken; QString noteStoreUrl = d.oauthResult()。NoteStoreUrl; }