Introduction

ブログ内検索

  • このサイトの記事を検索 by Google

おすすめの一冊!

無料ブログはココログ

« Evernote API の門を叩く | トップページ | 「なぜふぉろ」の shortcut 対応 »

2011-01-26

2種類の API keys


予想どおり Evernote API のユーザ認証でハマったので、メモ。


API key を申請すると、consumer key と consumer secret が
メールで送られてきます。Evernote API を叩くときは、
UserStore に対してこれらの値を指定してあげるわけです。

my $userStoreTrans = Thrift::HttpClient->new($config{site} . '/edam/user'); my $userStoreProt = Thrift::BinaryProtocol->new($userStoreTrans); my $userStore = UserStoreClient->new($userStoreProt, $userStoreProt); my $versionOK = $userStore->checkVersion('tw2en/0.0.0.1', EDAMUserStore::Constants::EDAM_VERSION_MAJOR, EDAMUserStore::Constants::EDAM_VERSION_MINOR); die unless $versionOK; my $authResult = $userStore->authenticate($config{username}, $config{password}, $config{consumer_key}, $config{consumer_secret}); die unless $authResult;
実際に試してみると、なにやら例外を上げようとして、 その例外のクラスを use してなくて死亡します。 とりあえず、パッチ。UserStore.pm に use 宣言を1行追加するだけ。
*** UserStore.pm.org 2010-11-30 05:25:37.000000000 +0900 --- UserStore.pm 2011-01-26 18:44:36.000000000 +0900 *************** *** 9,14 **** --- 9,15 ---- use Thrift; use EDAMUserStore::Types; + use EDAMErrors::Types; # HELPER FUNCTIONS AND STRUCTURES
これで実行すると、ちゃんと例外を上げてくれるようになります。
$VAR1 = bless( { 'parameter' => 'consumerKey', 'errorCode' => 8 }, 'EDAMErrors::EDAMUserException' );
API リファレンスの EDAMErrorCode の項を見ると、errorCode=8
INVALID_AUTH Username and/or password incorrect
というらしい。 しかし、指定した username/password はさっき sandbox に 作ったばかりで、普通にログインできるもの。 困ったので Evernote のユーザーフォーラムを検索してみると、 答えがわかりました。 Re: EDAMUserException(errorCode:8,parameter:"consumerKey") API keys には "client keys" と "web service keys" の2種類があって、 後者の API keys は OAuth 認証にしか使えないとのこと。 Seaoak は「Web アプリケーションの作成」という名目で申請したので、 UserStore.authenticate では使えないのでした。 二日連続での徒労に、ちょっとやられてます・・・

« Evernote API の門を叩く | トップページ | 「なぜふぉろ」の shortcut 対応 »