■
xwitter を OAuth 認証にした。そこからコードを抜き出して JS で Twitter の OAuth やるならまあこんな感じじゃねっていうサンプルを貼っておく。Same origin policy に引っかかる環境では動かせない。あくまでサンプル。oauth.js 使うよ。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>OAuth test</title> <script src="oauth.js"></script> <script src="sha1.js"></script> <script src="jquery-1.4.2.min.js"></script> <script src="jquery.cookie.js"></script> <script> jQuery(function($) { var _consumer_token = ''; var _consumer_token_secret = ''; var _pref_access_token = 'access_token'; var _pref_access_token_secret = 'access_token_secret'; var _oauth_token = $.cookie(_pref_access_token) || ''; var _oauth_token_secret = $.cookie(_pref_access_token_secret) || ''; var _message = function(spec) { var that = {}; that.action = spec.url; that.method = spec.type; that.parameters = []; OAuth.setParameter(that, 'oauth_consumer_key', _consumer_token); if (_oauth_token) { OAuth.setParameter(that, 'oauth_token', _oauth_token); } var data = spec.data; for (var prop in data) { if (data.hasOwnProperty(prop)) { OAuth.setParameter(that, prop, data[prop]); } } OAuth.setTimestampAndNonce(that); OAuth.SignatureMethod.sign(that, { consumerSecret : _consumer_token_secret, tokenSecret : _oauth_token_secret }); return that; }; var _init = function() { var message = _message({ type : 'GET', url : 'https://api.twitter.com/1/statuses/home_timeline.xml' }); $.ajax({ type : message.method, url : message.action, data : OAuth.getParameterMap(message.parameters), success: function(data) { alert('success!'); } }); }; (function() { if (_oauth_token && _oauth_token_secret) { _init(); return; } var re_token = /oauth_token=([^&]+)/; var re_token_secret = /oauth_token_secret=([^&]+)/; var message = _message({ type : 'GET', url : 'https://api.twitter.com/oauth/request_token' }); $.ajax({ type : message.method, url : message.action, data : OAuth.getParameterMap(message.parameters), success: function(data) { _oauth_token = ( re_token.exec(data) || [] )[1]; _oauth_token_secret = ( re_token_secret.exec(data) || [] )[1]; var message = _message({ type : 'GET', url : 'https://api.twitter.com/oauth/authorize' }); var win = window.open(OAuth.addToURL(message.action, message.parameters)); var oauth_verifier = $.trim(prompt('PIN')); win.close(); var message = _message({ type : 'POST', url : 'https://api.twitter.com/oauth/access_token', data : { 'oauth_verifier': oauth_verifier } }); $.ajax({ type : message.method, url : message.action, data : OAuth.getParameterMap(message.parameters), success: function(data) { _oauth_token = ( re_token.exec(data) || [] )[1]; _oauth_token_secret = ( re_token_secret.exec(data) || [] )[1]; $.cookie(_pref_access_token, _oauth_token); $.cookie(_pref_access_token_secret, _oauth_token_secret); _init(); } }); } }); })(); }); </script> </head> <body> </body> </html>