使うもの
基本の型をつくる
パッケージのインストール
1.package.json
をつくる
""にしてるので最新が落ちる。
バージョンしてしたければ、"express": "3.2."のようにする。
{
"name": "node-sns",
"version": "0.0.1",
"private": true,
"dependencies":{
"express": "*",
"twitter": "*"
}
}
2.インストール
npm install
本体
ルーティングファイルを指定しているところだけ注意。
ルーティングファイルを別ファイルにしていて同じディレクトリのroutes.jsということ。
'use strict';
var http = require('http');
var express = require('express');
// ルーティングファイルを指定
var routes = require('./routes');
var app = express();
var server = http.createServer(app);
routes.configRoutes(app, server);
server.listen(3000);
console.log('Listening on port %d in %s mode', server.address().port, app.settings.env);
ルーティング
app.all
でapi/*
というurlでアクセスされたときの共通処理を記述している。
/api/twitter/search
というurlでアクセスされたときにtwitter.search
を呼んで結果を返している。
このtwitter
はvar twitter = require('./twitter');
のとおり、別ファイルのtwitter.jsを指している。
'use strict';
var configRoutes;
var url = require('url');
var twitter = require('./twitter');
var urlInfo;
configRoutes = function(app, server) {
app.get('/', function(request, response) {
response.redirect('/index.html');
});
app.all('/api/*', function(request, response, next){
// クエリー文字列を含めてurl情報を取得(trueオプションでクエリ文字列も取得)
urlInfo = url.parse(request.url, true);
// jsonでレスポンス(外部の人もアクセスできるようにAccess-Control-Allow-Originを設定)
response.contentType('json');
response.header('Access-Control-Allow-Origin', '*');
next();
});
app.get('/api/twitter/search', function(request, response) {
twitter.search(urlInfo,
function(result){
response.send(result);
}
);
});
}
module.exports = {configRoutes: configRoutes};
Twitter API処理
Twitter APIのアカウント作成
以下にアクセスしてログインする。
[Create New App]する。
API KEYSタブで次の作業をする。
[Cange App Permissions]
[Create my access token]
で、以下をメモ。
API key
API secret
Access token
Access token secret
環境変数設定
node-twitterのサイトをみると、Twitterのキーは環境変数に設定するといいよとあるのでそうする。
Macだったら.bash_profileとかで以下のように書いて、source ~/.bash_profile
するかターミナルを再起動する。
export TWITTER_CONSUMER_KEY="YOURS"
export TWITTER_CONSUMER_SECRET="YOURS"
export TWITTER_ACCESS_TOKEN_KEY="YOURS"
export TWITTER_ACCESS_TOKEN_SECRET="YOURS"
Twitter API処理
とりあえず、検索だけ。
リクエストのクエリ文字列をそのままTwitter APIのオプションにする。
とりあえず、qとcountだけ。
search以外のメソッドを追加したときは、最後のexportsに追加するのを忘れないように。
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: process.env.TWITTER_CONSUMER_KEY,
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
access_token_key: process.env.TWITTER_ACCESS_TOKEN_KEY,
access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET,
});
//キーワードで検索
function search(urlInfo, callback){
var options = {};
if( urlInfo.query.q ) {
options.q = urlInfo.query.q
}
if( urlInfo.query.count ) {
options.count = urlInfo.query.count
}
client.get('search/tweets', options, function(error, tweets, response){
callback(tweets);
});
}
module.exports = {
search: search
}
動かす
1.server起動
node app.js
2.アクセス
参考