用意するもの
- webapi-vim
- open-browser.vim
- consumer key と consumer secret を事前に取得しておく
アクセストークンの取得
let request_token_url = 'https://twitter.com/oauth/request_token' let access_token_url = 'https://twitter.com/oauth/access_token' let authorize_url = 'https://twitter.com/oauth/authorize' let consumer_key = 'your consumer key' let consumer_secret = 'your consumer secret' " リクエストトークンを取得する let ctx = oauth#request_token( \ request_token_url, \ {'consumer_key' : consumer_key , 'consumer_secret' : consumer_secret}) " ctx にトークンが格納される echo ctx.consumer_key echo ctx.consumer_secret echo ctx.request_token echo ctx.request_token_secret " ブラウザで認証 url を開く execute "OpenBrowser " . authorize_url . "?oauth_token=" . ctx.request_token " 画面に表示されている pin を入力 let pin = input("pin : ") " アクセストークンを取得する let ctx = oauth#access_token(access_token_url, ctx , {'oauth_verifier' : pin}) " ctx にトークンが格納される echo ctx.access_token echo ctx.access_token_secret
ステータスの取得
let api_url = 'https://api.twitter.com/1' " リクエストパラメータにトークンを設定 let ctx = { \ 'consumer_key' : consumer_key , 'consumer_secret' : consumer_secret , \ 'access_token' : access_token , 'access_token_secret' : access_token_secret , \ } " home timeline を取得 let res = oauth#get(api_url . '/statuses/home_timeline.xml' , ctx) " xml をパースし for tweet in xml#parse(res.content).childNodes('status') " ツイートを出力 echo tweet.childNode('user').childNode('screen_name').value() . ' : ' . tweet.childNode('text').value() endfor
まとめ
OAuth 周りがめんどくさくて Rubytter.rb をラップする rubytter.vim を書いて使っていたんだけど、webapi-vim を使えば pure vimscript でいけそう。