5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ExpressでTwitter APIを試す

Last updated at Posted at 2020-04-20

はじめに

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

Twitter Developer

概要

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

準備

Twitterアカウント

アカウント作成

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

TwitterAPIアクセスポイント作成

  1. TwitterDeveloperにログイン
    1.png

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

  3. Create an appよりアプリ登録
    2.PNG
    アプリ登録画面
    3.PNG

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

項目 説明
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を押下

5.PNG

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

6.PNG

作成完了
 7.PNG

使用するのは4つ

  • Api key
  • Api secret key
  • Access token
  • Access token secret

Node.js

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

使用方法

今回はトレンドを見ることにした
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 にアクセス
    8.PNG

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

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?