こんにちは。なかじまん @ YOKOHAMA です。
東北関東大震災で被災された皆さまには心よりお見舞い申し上げます。
Google Apps Script の UrlFetch Services は 2Legged OAuth に対応してないっぽいので自前でやってみた に続いて、Windows Script Host (WSH) を使って Windows のコマンドラインから 2-Legged OAuth をやってみました。
WSH の場合、いろいろな実装方法を選択できそうなのですが、前述の Google Apps Script の JavaScript をそのまま動かす方法を選択しています。
なので、ソースコードはほとんど同じで、UrlFetch Services ではなく XMLHttpRequest を同期で使っているくらいの違いです。
<job>
<script language="JavaScript" src="sha1.js"></script>
<script language="JavaScript" src="oauth.js"></script>
<script language="JavaScript" src="json2.js"></script>
<script language="JavaScript">
var endpoint = 'http://nakajiman.3arrows.jp/api/rpc/a';
var consumerKey = '{Consumer Key}';
var consumerSecret = '{consumer Secret}';
var requestor_id = 'nakajiman(at)lrlab.to';
var message = { method: 'POST', action: endpoint, parameters: {} };
OAuth.setParameter(message, 'oauth_consumer_key', consumerKey);
OAuth.setParameter(message, 'oauth_version', '1.0');
OAuth.setParameter(message, 'oauth_timestamp', OAuth.timestamp());
OAuth.setParameter(message, 'oauth_nonce', OAuth.nonce(6));
OAuth.setParameter(message, 'xoauth_requestor_id', requestor_id);
OAuth.SignatureMethod.sign(message, { consumerSecret: consumerSecret });
var url = OAuth.addToURL(endpoint, message.parameters);
var data = JSON.stringify({
jsonrpc: '2.0',
method: 'activities.create',
params: { userId: '@viewer', group: '@self', activity: { title: 'Say hello!' } },
id: 1
});
var xhr = WScript.CreateObject('MSXML2.XMLHTTP');
xhr.open(message.method, url, false);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(data);
if (xhr.status != 200)
WScript.Echo(xhr.status + ' ' + xhr.statusText);
else {
var res = JSON.parse(xhr.responseText);
WScript.Echo(res.result);
}
</script>
</job>
ただいま、
企業やチーム向けのプライベートマイクロブログ 3arrows では、お客様のシステムやサービスとの連携を目的とした「シングルサインオン」と「2-Legged OAuth ベースの API」に取り組んでいます。
2-Legged OAuth ベースの API 公開により、システムやサービスの統合に加えて、Google Apps Script や Windows Script Host から 3arrows を操作して、ユーリティティの用途としても活用できるようになります。