WSHでツイートする
JavaScriptのOAuthライブラリを知った。
これをJScriptで使えばツイートできるのでは?と思って試したらできた。
使い方
cscript tweet.wsf "Yo"
コード
tweet.wsf
<job> <script language="JScript" src="oauth.js" /> <script language="JScript" src="sha1.js" /> <script language="JScript"> var accessor = { consumerSecret: "API secret", tokenSecret: "Access token secret" } var message = { method: "POST", action: "https://api.twitter.com/1.1/statuses/update.json", parameters: { oauth_consumer_key: "API key", oauth_signature_method: "HMAC-SHA1", oauth_token: "Access token", oauth_version: "1.0", status: WScript.arguments(0) } } OAuth.setTimestampAndNonce(message); OAuth.SignatureMethod.sign(message, accessor); var target = OAuth.addToURL(message.action, message.parameters); var xhr = new ActiveXObject("Msxml2.ServerXMLHTTP"); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if (xhr.status == 200) { Wscript.echo("成功"); } else { Wscript.echo("失敗"); } } } xhr.open(message.method, target); xhr.setRequestHeader("Authorization", OAuth.getAuthorizationHeader("", message.parameters)); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send(); </script> </job>
所感
- OAuthライブラリは全く手を加えることなく動く
- POSTでもOAuth.addToURLが必要なのに気づかず1日無駄にした
- XMLHTTPRequestのCOMが複数あるらしく、上手くいかないのもあったが自分の環境(Win7 SP1)ではMsxml2.ServerXMLHTTPで動いた