LuaでTwitterにpost!
LuaスクリプトでTwitterにツイートを投稿する手順をお教えします!
半年前に同じ記事を書いたときはBasic認証を利用していましたが、Basic認証は廃止されてしまいました。そこで今回はOAuth認証を行うことにします。
基本的にはignacioさんのLuaOAuthをそのまま利用して実現しています。この場を借りてお礼申し上げます。
OAuth認証して投稿するための手順
OAuth認証と言われてもぴんとこない人もいるかもしれませんが、ある程度Twitterを使っている人なら、下の画像のような「拒否する」「許可する」の画面を一度は見たことがあると思います。
今回、Luaからツイートできるようにするために、事前にこのような認証を完了しておかねばなりません。
本記事でのツイート完了までの大まかな道のりはこんな感じです。
スクリプト実行環境の整備
多数のモジュールとともにスクリプトの動作環境が整えられて便利なため、本記事ではLua for Windows (5.1.4-40)でスクリプトを動作させます。他のホストを利用する場合も、実行環境整備以降の作業が変わることはありません。
後々出てくるスクリプトの実行にはさまざまなモジュールが必要です。先に準備してしまいましょう。
執筆当時はともかく、現在であれば LuaRocks を利用することもできるかもしれません。
ssl.https モジュール取得
LuaSec -- TLS/SSL Support for Lua から luasec-0.4-openssl-0.9.8-lua-5.1-win32-dll9.zip をダウンロードして、INSTALL.txt の指示通りにファイルを配置します。Lua for Windows 用に読み替えると次の手順となります。
- 「modules\ssl.lua」を lua ディレクトリにコピー
- 「modules\ssl.dll」を clibs ディレクトリにコピー
- 「ssl」ディレクトリを lua ディレクトリに作成
- 「modules\https.lua」を ssl ディレクトリにコピー
※追記:後々 libeay32.dll のエラーが出るようでしたら、DLLのインストールを行ってください。
Lua AIO Distribution からのモジュール取得 (crypto, curl, iconv)
LuaForge: Lua AIO: Project Info から luaaio_2.0_windows.zip をダウンロードします。lib ディレクトリの中に多数のライブラリが格納されているので、その中の crypto.dll, curl.dll, iconv.dll を clibs ディレクトリにコピーします。
しかし、これだけではこれらのモジュールは動作しません。Lua for Windows のディレクトリにある lua51.dll を、lua.dll の名前でコピーすることを忘れずに行ってください。
OAuth モジュール取得
ignacio's LuaOAuth at master - GitHub から OAuth.lua をダウンロードし、lua ディレクトリにコピーしてください。
アプリケーションの登録
Twitter / アプリケーションから、新しいアプリケーションを登録にアクセスします。日本語のページなので個々の項目の説明は割愛しますが、以下の項目は変更してください。
- アプリケーションの種類: クライアントアプリケーション
- Default Access type: Read & Write
登録後に表示されるConsumer keyとConsumer secretがスクリプトの動作のために必要となります。
OAuth認証
続いてOAuth認証を行います。まずは以下のスクリプトをダウンロードしてください。
テキストエディタで開くと、冒頭に consumer_key, consumer_secret の2つの変数がありますので、先ほど取得したCustomer keyを設定してください。
コンソールからスクリプトを実行すると、以下のような表示があらわれます。
Navigate to this url with your browser, please... http://api.twitter.com/oauth/authorize?oauth_callback=oob&oauth_consumer_key=EOUmHM4t85aJ9189riFHAw&oauth_nonce=583ba7c6f4c7fa0703dc9a7dcd81bb96b3b16549&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1287748790&oauth_token=UEjzHtNc9gkaN7uMogWDYXXcAXZDn6mQmmVtFXY9n4k&oauth_version=1.0&oauth_signature=fKSS%2BRfhR5IJYHy4iEx8rn9Ty9g%3D Once you have logged in and authorized the application, enter the PIN
表示されているURLが認証ページのURLです。早速ブラウザのアドレスバーにコピペしてページを開きましょう(改行コードに注意)。
よく見る認証画面が出てくるので「許可する」をクリックして次に進みます。
暗証番号が表示されましたか? 先ほど実行したスクリプトの画面に戻り、暗証番号を入力してEnterキーを押しましょう。
Once you have logged in and authorized the application, enter the PIN 0265389 screen_name tassanbot oauth_token 7778532-JCgVbX6nUYEvAIIuSIkwuFZzsqa6W1VC5ejVxESfni oauth_token_secret U2Scku3UIykJMt7ddtkJz2qvFGlH4li4YLQtTrhyNs user_id 1234567
以上のように表示されれば認証は成功です。oauth_tokenとoauth_token_secretを記録しておきましょう。
LuaでTwitterに投稿 - 最後の準備
以下のスクリプトをダウンロードしてください。
テキストエディタで開いて、4つの変数 consumer_key, consumer_secret, oauth_token, oauth_token_secret にここまでの過程で得たキーを設定します。