承認これくしょん

my black histories

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で動いた