ExpressでTwitter APIを試す


はじめに

後輩がTwitterAPIの話してたら気になったので、叩いてみることにした。

Twitter Developer

概要

- Twitterアカウントがあれば自分用のAPIアクセスポイントを作って、TwitterAPIを叩ける

準備

Twitterアカウント

アカウント作成

※アカウント保有者は飛ばす

TwitterAPIアクセスポイント作成

  1. TwitterDeveloperにログイン

  2. 右上ユーザー名プルダウンからAppsへ飛ぶ

  3. Create an appよりアプリ登録

    アプリ登録画面

テストなので↓こんな感じの内容↓で登録

項目 説明
App Name test 自分の作るアプリの名前
Description just for test アプリの説明
Website URL http://test.com アプリのURL
Sign in with Twitter enabled
Callback URL http://localhost:3000 サーバーURL。本番サーバー立てたら追加
Terms of service URL
Privacy policy URL
Organization name
Organization website URL
App usage test test test test test test test test test test test test test test test test test test test test test test test test test test 詳細なアプリ説明

下のCreateを押下

4.作成できたらKeys and tokensタブのGenrate keyを押下

重要
↓こんな画面↓が出てくるので、Access tokenAccess token secretをコピペ&メモして保存

作成完了
 

使用するのは4つ
- Api key
- Api secret key
- Access token
- Access token secret

Node.js

Node.jsインストール

npmも使えるようにしておく
Node.jsダウンロードサイト

使用方法

- APIレファレンスから使いたいAPIを探す。

今回はトレンドを見ることにした
HttpRequest飛ばすだけでよさそう

API Reference contents 
GET trends/available   GET trends/closest
var Twitter = require('twitter');

var client = new Twitter({
  consumer_key: '',
  consumer_secret: '',
  access_token_key: '',
  access_token_secret: ''
});

var params = {screen_name: 'nodejs'};
client.get('statuses/user_timeline', params, function(error, tweets, response) {
  if (!error) {
    console.log(tweets);
  }
});

サーバーを立ててみる

仕様

サーバーのURLを叩いたらTwitterのトレンド結果がとりあえず画面いっぱいに出る。

ソースコード

package.json
{
  "name": "twitter_api_test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node ./index.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1",
    "twitter": "^1.7.1"
  }
}

index.js
// server settings
const express = require("express")
const server = express();
const port = 3000

// twitter settings
const Twitter = require('twitter');
// さっき作ったAPIの設定
const API_KEY = "AAAAAAAAAA"
const API_SECRET_KEY = "BBBBBBBBBB"
const ACCESS_TOKEN = "CCCCCCCCCC"
const ACCESS_TOKEN_SECRET = "DDDDDDDDDD"

const twitter = new Twitter({
    consumer_key: API_KEY,
    consumer_secret: API_SECRET_KEY,
    access_token_key: ACCESS_TOKEN,
    access_token_secret: ACCESS_TOKEN_SECRET,
});

// routes
server.get("/", function (req, res, next) {
    res.send("server is up")
});

server.get("/trends", function (req, res, next) {
    // ここでTwitterAPIを叩く
    twitter.get('trends/available', function (error, result, response) {
        if (error) {
            res.send(error)
        } else {
            res.send(result); // TwitterAPIの結果をそのまま返す
        }
    });
})

server.listen(port, function () {
    console.log('Listening on port ' + port)
});

結果

  1. npm installしたらnpm start
  2. localhost:3000 にアクセス

  3. localhost:3000/trendsにアクセス
    うまくいきました