Node.jsからTwitterAPIを使ってみたのでまとめました
やりたいこと
- TwitterAPIを使ってツイート内容と画像をあげる
- WebブラウザからのアクセスとUIWebViewを使ったアプリから使われるのでPin認証を使う
手順
- Twitter Application Management からアプリ作成する。Settingsタブの"Callback URL"は空欄にする。いつの間にか携帯電話番号が必要になっていた
npm install oauth twitter --save
でライブラリをインストール- 軽く検証するときは、アプリの設定画面のKey and Access TokensタブのYour Access TokenでIDを発行する
あとはGistのような感じで。
コードの補足
L45でTwitterオブジェクトをnew するときに _.merge(clientConfig,...
をしているのは、テストを書くときにnockを使ってテストをしたいため。テスト時にはconfig部分を変更している。
処理の流れとしては
- getOAuthTokenでトークンとPinを表示するためのURLを取得
- クライアント側でTwitterのPinの画面からコピーしたpin番号を渡してもらってauthCallbackを呼び出す。
- uploadMediaをアップしたい画像の数分呼び出す
- tweet処理でツイート内容とuploadMediaのcallbackで取得した
media_id_string
のカンマ区切りをわたす
感想
ドキュメントしっかりしてるのと、npmにライブラリが揃ってるから簡単に実装できた(小並感)
2015-07-07 画像周りの追記
ツイート内容に決まってる画像を埋め込む場合は、いちいちアップするのは通信の無駄なので、
- 鍵がかかってないアカウントに画像をUPする
- UPしたツイートのリンクから画像のURLをとる(例えば:pic.twitter.com/wldYWc3CXn)
- 画像のURLを本文に埋め込む
参考
- PIN-based authorization | Twitter Developers
- OAuth Core 1.0
- API Rate Limits | Twitter Developers
- Uploading Media | Twitter Developers
- POST statuses/update | Twitter Developers