自作EvernoteスクリプトをOAuth対応する

あらすじ

結構前に、Evernoteの認証方法がOAuthになるので、変更してくださいねーというメールがEvernoteからきていた。

ユーザ名とパスワードによる認証から OAuth 認証への移行 - Evernote Developers

そのまま従来のスクリプトを動かしていると、認証エラーになるので、OAuth認証ができるように修正した。

主に自分用メモ。

環境

  • Ruby 1.8.7

注: Evernoteスクリプトは自分しか使っていない。

参考サイト

手順

img img

他の人が使っていない、自分だけで使っている場合は以降の箇所だけ修正すればよい。

修正箇所

上記のDeveloperTokenをソース上で取得できるようにする。(今まで使っていたuserid、パスワードはいらない)以下では、Pitを使ってtokenなどを別出ししているので、そこを修正。

         user = Pit.get("evernote", :require => {
+            "developerToken" => "your evernote token.",
         })

従来は、 userStore.authenticate() で認証を通して、 authenticationToken を使うようにしていたが、このくだりを まるまるカット

この authenticationTokendeveloperToken に置き換えてやる。

         # 認証
-        @auth = auth(user, userStore)
-        @authToken = @auth.authenticationToken
-       
+        @authToken = user["developerToken"]
+

で、一個だけ困ったのが、認証結果からuserのshardIdを取ってきてnoteStoreUrlを生成していた箇所。

まるまるカットされたので、どうやって取得するのかな? と思ったら、userStoreに getNoteStoreUrl(token) というメソッドがあるので、これを使えば良い。

         noteStoreUrlBase = "https://#{evernoteHost}/edam/note/"
-        noteStoreUrl = noteStoreUrlBase + @auth.user.shardId
+        noteStoreUrl = userStore.getNoteStoreUrl(@authToken)
         noteStoreTransport = Thrift::HTTPClientTransport.new(noteStoreUrl)
         noteStoreProtocol = Thrift::BinaryProtocol.new(noteStoreTransport)
         @noteStore = Evernote::EDAM::NoteStore::NoteStore::Client.new(noteStoreProtocol)

これだけで、とりあえず動くようにはなった!

関連記事(この記事の初版より古い記事はリンクがグレーで表示されます)

  1. 2011/12/27 [Evernote] [Ruby] [API] EvernoteのAPIをRubyから叩きたい
  2. 2013/12/24 [Ruby] RubyでQRコードを生成してみる
  3. 2013/09/07 [Ruby] [Git] [Jekyll] Jekyllバージョンアップの際に思いのほか手こずった話 てっく煮さん製プラグインの更新に追従したい編
  4. 2013/09/03 [Ruby] [Rails] Ruby1.9.3のWebrickで出るCould not determine content-length...エラーを消す方法(2.0.0では解決済)
  5. 2013/08/26 [Ruby] ソースコード中に0xC2A0(UTF-8のNO-BREAK SPACE)が混ざり実行できなくて困った話
  6. 2013/08/20 [Ruby] [Rails] [Redmine] Rails3のログ出力にANSIカラーコードを使用しない設定
  7. 2013/08/09 [Ruby] [Redmine] [MySql] [StartUp] WindowsにRedmine2.3をインストールする手順と、プラグイン作成用メモ
  8. 2013/08/07 [Ruby] [Jekyll] [Git] Jekyllバージョンアップの際に思いのほか手こずった話 Jekyll Bootstrapの更新に追従したい編
  9. 2013/05/27 [Jekyll] [Ruby] Jekyll@GitHub Pagesの運用形態を変えたのでAnalyticsの設定が効かなくなっていた
  10. 2013/05/23 [Jekyll] [Liquid] [Ruby] 記事の目次を出力するJekyllプラグインの改良
  11. 2013/04/27 [Ruby] [Chef] [イベント] BPStudy#68に参加しました #bpstudy
  12. 2013/04/11 [Ruby] [Jekyll] Jekyllのバージョンを 0.12.0 にあげた
  13. 2013/04/01 [Ruby] [StartUp] [Chef] 入門Chef Solo - Infrastructure as Code を読みながらChef Soloで遊べるようになるまで
  14. 2013/03/18 [Selenium] [Firefox] [Ruby] Selenium WebDriverでFirefoxがロードできなくなった
  15. 2013/03/07 [Ruby] [Selenium] [iPhone] [IE] [Test] IEとかiPhoneWebView上でSeleniumを走らせる