要oauth.js, sha1.js
Consumer key
Consumer secret
をさらさないとダメなので、他の人に勝手に使われるよなあ
でもしょうがないよなあ
index.html
<head>
<script src="http://oauth.googlecode.com/svn/code/javascript/oauth.js"></script>
<script src="http://oauth.googlecode.com/svn/code/javascript/sha1.js"></script>
<script src="getTwitterAPI.js"></script>
</head>
getTwitterAPI.js
// あらかじめアプリ登録して取得
var CONSUMER = {
"key" : XXXXXXXXXXXXXXX,
"secret" : XXXXXXXXXXXXXXXX
};
// ユーザの自前アカウントで取ってきてもらってもいいし、アプリ固有のを埋め込んでもいい
var ACCESS = {
"screen_name" : false,
"key" : false,
"secret" : false
};
// url : APIのURL。GETクエリを含むもの
// callBackFunc : コールバック関数 第一引数にAPIアクセスの結果が連想配列のObjectで渡る
// onerror : Functionをセットすると、scriptタグ埋め込みに失敗した時の挙動を定義可
function getTwitterAPI(url, callBackFunc, onerror){
var parameters = {
oauth_signature_method: "HMAC-SHA1",
oauth_consumer_key: CONSUMER['key'],
oauth_token: ACCESS['key'],
callback: callBackFunc
};
var api_url = url;
var message = {
method: "GET",
action: api_url,
parameters: parameters
};
var secretKeys = {
"consumerSecret" : CONSUMER['secret'],
"tokenSecret" : ACCESS['secret']
};
OAuth.setTimestampAndNonce(message);
OAuth.SignatureMethod.sign(message, secretKeys);
var signed_url = OAuth.addToURL(api_url, parameters);
var ele = document.createElement("script");
if(is('Function', onerror)){
ele.onerror = onerror;
}
var head = document.getElementsByTagName('head').item(0);
ele.type = "text/javascript";
ele.src = signed_url;
head.appendChild(ele);
}
function is(type, obj) {
var clas = Object.prototype.toString.call(obj).slice(8, -1);
return obj !== undefined && obj !== null && clas === type;
}
使用例
getTwitterAPI('https://api.twitter.com/1.1/application/rate_limit_status.json?resources=users', 'callback_limit');
function callback_limit(json){
var limitHash = json;
console.log(limitHash);
}