Node.js
Twitter

node.jsのtwitterモジュールを使ってみた作業メモ (1)

More than 3 years have passed since last update.

注意: ここは作業メモ、大した情報は無いですょ。

なんとなく、node.jsの勉強会に参加してみたりしたので、何かつくろうかなぁと思い、

ひとまずTwitterをいじってみることにしました。

もっと丁寧な解説ページはいくらでもあると思うので、ここは完全に単なる自分の作業メモとして書いていきます。


ひとまず動作させてみる


Twitter developer credentialを取得する

まずは Twitterのサイト からクレデンシャルを取得する必要があるようで。

Create an applicationをつついて、出てきたフォームに必要事項を記入。


  • Name

  • Description

  • Website

  • Callback URL

Callback URL以外は必須みたいですが、Websiteについては、

まだ無ければ placeholder 書いとけってことなので、Qiita のURLでも書いてときます。

アプリ名は、てけとうにtwitter-testとでもしておきます。 ← 後程失敗の原因になります

で、同意して Createもげもげ ってボタンを押したら怒られました。

Error

You must add your mobile phone to your Twitter profile before creating an application. Please read https://support.twitter.com/articles/110250-adding-your-mobile-number-to-your-account-via-web for more information.

ええええええ……。

まぁ、登録しないと何もできなさそうなので、

Twitterのサイトからプロフィールのモバイル登録して、先程のフォームでポチっとなっと…………。

Error

The client application failed validation: Twitter-test is already taken for Name.

うぎゃあああぁぁぁぁ…………。

しょーがないので、 "Rare's Twitter-test" としました……。

これで、無事に色々と生成できたようです。

あ、アプリ名は後で変更できるみたいですね……。


Access Tokenの作成

クレデンシャルだけでなく、トークンも必要みたいです。

Application ManagementのサイトのKey and Access Tokensというタブをつつくと、

下の方に Create my access token というボタンがあるのでつつきます。


node.jsのTwitterモジュール

npmでさくっとインストールします。

他にも色々モジュールあるとかいう話を読んだ気がしますが、漢らしくtwitterと名乗ってるヤツを使ってみます。

$ npm install twitter

あ、なおバージョン的には、debから入れた以下な感じ。

$ npm --version

3.8.3
$ nodejs --version
v5.10.1


テスト

ひとまず、 twitterモジュールのページ にあるサンプルコードを打ちこんでみます。

以下のようにコードを打ちました。


twitter-test.js

var twitter = require('twitter');

var client = new twitter({
consumer_key: '先程取得したconsumer key',
consumer_secret: '先程取得したconsumer secret',
access_token_key: '先程取得したtoken key',
access_token_secret: '先程取得したtoken secret',
});

var params = {screen_name: 'nodejs'};

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


で、以下のように実行。

$ nodejs twitter-test.js

とすると、なんかベロベロと表示されました。

twitterのサイト経由でnodejsのツイートを見てみると、同じような内容があるので、ちゃんと取得できたもよう。

[ { created_at: 'Wed Apr 20 13:41:47 +0000 2016',

id: 722782317186392000,
id_str: '722782317186392064',
text: '@AfroJme @js_digest @sumithanathan strange... It works on desktop & if you open it in your email. Working o
n how to fix this now.',
entities: { hashtags: [], symbols: [], user_mentions: [Object], urls: [] },
truncated: false,
source: '<a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>',
in_reply_to_status_id: 722780639360106500,
in_reply_to_status_id_str: '722780639360106496',
in_reply_to_user_id: 44491207,
in_reply_to_user_id_str: '44491207',
in_reply_to_screen_name: 'AfroJme',
user:
{ id: 91985735,
id_str: '91985735',
name: 'Node.js',
screen_name: 'nodejs',
location: 'Earth',
description: 'The Node.js JavaScript Runtime',
url: 'https://t.co/X32n3a0B1h',
entities: [Object],
protected: false,
followers_count: 337876,
friends_count: 257,
listed_count: 5214,
created_at: 'Mon Nov 23 10:57:50 +0000 2009',
favourites_count: 325,
utc_offset: -25200,
time_zone: 'Pacific Time (US & Canada)',
geo_enabled: false,
verified: false,
statuses_count: 2447,
lang: 'en',
contributors_enabled: false,
...

コード中で使ってる "statuses/user_timeline" ってのについては、

REST APIのマニュアルGET statuses/user_timeline のところを読めばオプションやら色々と書いてあるようで。

色々と試してみよう……。


参考