@rev84さんが1週間ほど前に投稿していたTwitterAPI v1.1(GET限定)に簡単アクセスを自分好みに改造してみました。
@rev84さんバージョンは、こんな形で関数呼び出しをしていますが、
@rev84さんバージョン
// あらかじめアプリ登録して取得
var CONSUMER = {
"key" : XXXXXXXXXXXXXXX,
"secret" : XXXXXXXXXXXXXXXX
};
// ユーザの自前アカウントで取ってきてもらってもいいし、アプリ固有のを埋め込んでもいい
var ACCESS = {
"screen_name" : false,
"key" : false,
"secret" : false
};
.
.
.
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);
}
こんな感じで呼び出せるようにしました。
@ktty1220バージョン
// オブジェクト作成
var twapi = new TwitterAPIonBrowser({
consumerKey: 'CONSUMER_KEY',
consumerSecret: 'CONSUMER_KEY_SECURET',
accessToken: 'ACCESS_TOKEN',
accessTokenSecret: 'ACCESS_TOKEN_SECRET'
});
// API呼び出し
twapi.get('application/rate_limit_status', {
resources: 'users'
}, function (data) {
// エラーの場合はdataがundefinedになる
console.log(data);
});
検索の場合はこんな感じですね。
検索の場合
twapi.get('search/tweets', {
q: 'うんこなう',
lang: 'ja',
count: 10,
include_entities: true
}, function (data) {
また、関数呼び出し時に<head>
タグに追加された<script>
タグをコールバック実行後に掃除したりするクリーンなエコ機能も追加しています。
その他の条件は@rev84さんバージョンと同様です。
- oauth.js、sha1.jsが必要
- GET限定
- APIキーはスクリプトに直書き
なので公のサービスには使えないと思いますが、個人用とか限定されたメンバー用なんかでは使えるかな、と。サーバーいらずでお手軽です。
ソースはこちらです。CoffeeScriptなのでJavaScriptにコンパイルして利用ください。
TwitterAPIonBrowser
class TwitterAPIonBrowser
constructor: (oauthKeys) ->
@parameters =
oauth_signature_method: 'HMAC-SHA1'
oauth_consumer_key: oauthKeys.consumerKey
oauth_token: oauthKeys.accessToken
@secret =
consumerSecret: oauthKeys.consumerSecret
tokenSecret: oauthKeys.accessTokenSecret
get: (api, apiParams, callback) =>
# 使い捨てのJSONPコールバック関数名
tmpCallback = "__twitter_api_on_browser_#{Number new Date()}"
# OAuthリクエスト用のパラメータ作成
reqParams = {}
reqParams[k] = v for k, v of @parameters
reqParams[k] = v for k, v of apiParams
reqParams.callback = tmpCallback
api = "https://api.twitter.com/1.1/#{api}.json"
message =
method: 'GET'
action: api
parameters: reqParams
OAuth.setTimestampAndNonce message
OAuth.SignatureMethod.sign message, @secret
# scriptタグ作成
scriptTag = document.createElement 'script'
scriptTag.type = 'text/javascript'
# reqParamsからOAuthリクエスト用のURLを作成
scriptTag.src = OAuth.addToURL api, reqParams
# 使い捨てのJSONPコールバック本体
window[tmpCallback] = (data) ->
callback data
# 使い捨てなので1秒後にscriptタグと関数自体を削除
setTimeout () ->
scriptTag.parentNode.removeChild scriptTag
try
delete window[tmpCallback]
catch e
# 古いIE用
window[tmpCallback] = undefined
, 1000
# scriptロードエラー時には引数なしで返す
scriptTag.onerror = () -> callback()
# headタグ内にscriptタグ設置
headTag = document.getElementsByTagName('head').item(0)
headTag.appendChild scriptTag
@TwitterAPIonBrowser = TwitterAPIonBrowser