Node.jsからTwitterAPIを使う

Node.jsからTwitterAPIを使ってみたのでまとめました

やりたいこと

  • TwitterAPIを使ってツイート内容と画像をあげる
  • WebブラウザからのアクセスとUIWebViewを使ったアプリから使われるのでPin認証を使う

手順

  1. Twitter Application Management からアプリ作成する。Settingsタブの"Callback URL"は空欄にする。いつの間にか携帯電話番号が必要になっていた
  2. npm install oauth twitter --save でライブラリをインストール
  3. 軽く検証するときは、アプリの設定画面のKey and Access TokensタブのYour Access TokenでIDを発行する

あとはGistのような感じで。 コードの補足 L45でTwitterオブジェクトをnew するときに _.merge(clientConfig,...をしているのは、テストを書くときにnockを使ってテストをしたいため。テスト時にはconfig部分を変更している。

処理の流れとしては

  1. getOAuthTokenでトークンとPinを表示するためのURLを取得
  2. クライアント側でTwitterのPinの画面からコピーしたpin番号を渡してもらってauthCallbackを呼び出す。
  3. uploadMediaをアップしたい画像の数分呼び出す
  4. tweet処理でツイート内容とuploadMediaのcallbackで取得した media_id_string のカンマ区切りをわたす

感想

ドキュメントしっかりしてるのと、npmにライブラリが揃ってるから簡単に実装できた(小並感)

2015-07-07 画像周りの追記

ツイート内容に決まってる画像を埋め込む場合は、いちいちアップするのは通信の無駄なので、

  1. 鍵がかかってないアカウントに画像をUPする
  2. UPしたツイートのリンクから画像のURLをとる(例えば:pic.twitter.com/wldYWc3CXn)
  3. 画像のURLを本文に埋め込む

参考

コード