node.jsでTwitterに投稿をしてみる
node.jsでTwitter APIを使ってTwitterに投稿を行うまでの流れです。
ある一点でハマってしまったので、その点についても記述します。
流れ
- keyとtokenの取得
- ソースコード
- 投稿
前提条件
node.jsは既に導入済みとします。
筆者はhomebrew
→nodebrew
→node.js
の手順でインストールしました。
またTwitterのAPIを使うにはTwitterの開発者アカウントが必要ですが、そちらも登録済みとします。登録方法は詳しくまとめている方が沢山いるので、そちらを参照して下さい。
環境
PC | Macbook air 2013 |
---|---|
OS | Big sur v11.2.3 |
Homebrew | v3.0.10 |
nodebrew | v8.9.4 |
エディタ | vs code |
1. keyとtokenの取得
[Twitterデベロッパーサイト]
(https://developer.twitter.com/ja)にアクセスします。
右上にあるDeveloper Potral
をクリックします。
Dashboard
が表示されたら、左側のoverview
を選択して、Add App
をクリックします。
この画面はプロジェクト作成済などの状態で人によって変わりますので参考程度にしてください。
また、選択肢にプロジェクトとスタンドアロンが表示されている方は、公式のこちらを参考にしてください。
アプリの名前を決めます。他のユーザが既に使用している名前は使用できません。
今回はdemo2021-test
という名前にしました。
名前が通ると、keyが生成されます。
このkeyは一度しか表示されませんが、現時点のkeyは今回の用途では使用できない可能性があるので保存はしなくても結構です。
keyは再生成できるので安心してください。
そしてそのまま、画面下にあるsetting
をクリックしてください。
次にApp permissions
の変更を行います。
ここが冒頭での筆者がハマった点になります。
デフォルトではこの設定がread
になっているので、Twitterに書き込みが行えません。
なので、permissionsをread+write
に変更します。
先ほどkeyを保存しなくて良いとした理由は、keyのpermissionがreadになっており、変更後に再生成したkeyでないとtwitterへの書き込みができない可能性があるからです。
次にkeyとtokenを生成します。
settings
からkey and tokens
に切り替え、Authentication TokensのGenerate
をクリックすると、tokenが生成されます。
Consumer Keys
では、既に一度keyを作っているのでRegenerate
からkeyを再生成します。
もし値を忘れた場合は、Regenerateからどちらも再生成が可能です。
2. ソースコード
ここからはターミナルでの作業です。
まずは、Twitterのモジュールをインストールします。
npm install twitter
次にプログラムを書いていきます。
ソースコードは、公式のドキュメントがあるのでそれに生成した自分のkeyとtokenを記述するだけです。
ファイル名は、twitter_node.js
にしました。
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: '自身のAPI key',
consumer_secret: '自身のAPI secret key',
access_token_key: '自身のAccess token',
access_token_secret: '自身のAccess token secret'
});
client.post('statuses/update', {status: 'node.js test hello!'}, function(error, tweet, response) {
if(error) throw error;
console.log(tweet); // Tweet body.
console.log(response); // Raw response object.
});
{status: 'node.js test hello!'}
の部分が、実際にツイートされます。
3. 投稿
あとは、プログラムを実行するだけです。
node twitter_node.js
Twitterにログインするとツイートがされています。
エラーを吐かれた場合
keyのpermissionsが変更前のreadとして反映されている可能性が高いです。
再生成したものを使用するようにしてください。
またkeyとtokenの配置も気をつけてください。
まとめ
node.jsからAPIを通してツイートできるようになりました。
Twitter APIに触れたのは初めてだったので色々と面白かったです。
今後はbot化を目指したいです。
参考文献
導入にあたり参考にした記事
Permissionsの解決に至った記事