Twitterを100倍楽しむためのbot開発基礎講座

第3回 実際にTwitter botを作ってみる

この記事を読むのに必要な時間:およそ 4 分

PHP用Twitterライブラリtwitteroauth

では,さっそくOAuthを使ってTwitter botから発言させてみるのですが,自前でOAuthを実装するのは簡単ではありません。なのでOAuthに対応したTwitterライブラリを使って発言させてみましょう。

PHPでOAuthに対応したTwitterライブラリはいくつかありますが,ここではtwitteroauthを紹介します。

ダウンロードページから最新版(2010/05/16時点で0.2.0-beta3)をダウンロードします。圧縮ファイルを解凍すると,twitteroauthディレクトリの中に

  • OAuth.php
  • twitteroauth.php

の2ファイルか確認できるかと思います。今回必要となるファイルはこの2つです。

twitteroauthの設定

OAuthを利用するためには,先ほど登録したOAuthアプリからTwitter botのアカウントを操作できるように許可を与える(OAuthトークンを取得する)必要があります。そのOAuthトークンを取得するプログラムを以下に掲載します。

<?php
require_once("twitteroauth.php");

// アプリ登録で取得したConsumer keyを設定
$consumer_key="consumer_key";
// アプリ登録で取得したConsumer secretを設定
$consumer_secret="consumer_secret";

$twitter = new TwitterOAuth($consumer_key, $consumer_secret);

// リクエストトークンの取得
$request_token = $twitter->getRequestToken();
// 認証用URLの取得
$url = $twitter->getAuthorizeURL($request_token);

print "$url\n";
print "にアクセスし,アクセスを許可した後表示される暗証番号を入力してください: ";

// 暗証番号を入力
$pin = trim(fgets(STDIN));

// 暗証番号からアクセストークンを取得する
$token = $twitter->getAccessToken($pin);
$oauth_token = $token["oauth_token"];
$oauth_token_secret = $token["oauth_token_secret"];

if(!empty($oauth_token) && !empty($oauth_token_secret)) {
  print "成功しました\n";
  print "\$oauth_token=\"$oauth_token\";\n";
  print "\$oauth_token_secret=\"$oauth_token_secret\";\n";
  fgets(STDIN);
} else {
  print "失敗しました\n";
}
?>

これをget_token.phpのファイル名で保存します。

利用方法ですが,まず手元のWebブラウザでTwitter botのアカウントをつかってログインします。ログイン後,先ほど保存したget_token.phpをphpコマンドから実行します。

php get_token.php

表示されたURLにアクセスし,Twitter botを先程登録したOAuthアプリから操作できるよう許可を行います。許可をすると,暗証番号が表示されますので,実行中のget_token.phpの画面に暗証番号を入力してください。

正しく入力されると「成功しました」の表示とともに,$oauth_tokenと$oauth_token_secretが表示されます。このoauth_tokenと「失敗しました」と表示された場合は設定を確認し,もう一度やり直してみてください。

twitteroauthを使った投稿テスト

これでOAuthを用いて投稿する準備が整いました。先程と同じbotからの発言をOAuthを用いて実行してみます。

<?php
require_once("twitteroauth.php");

// OAuthアプリ登録で取得したConsumer keyを設定
$consumer_key="";
// OAuthアプリ登録で取得したConsumer secretを設定
$consumer_secret="";
// OAuthトークン取得プログラムで取得したoauth_tokenを設定
$oauth_token="oauth_token";
// OAuthトークン取得プログラムで取得したoauth_token_secretを設定
$oauth_token_secret="oauth_token_secret";

// プログラムの文字コードがUTF-8の場合はこのまま
$status = "OAuth経由での発言テスト";
// プログラムの文字コードがSJISの場合はUTF-8に変換
//$status = mb_convert_encoding($status, "UTF-8", "SJIS");

// 発言を行うメソッドを指定
$method = "statuses/update";
// パラメータを指定(ここでは発言内容を指定)
$parameters = array("status" => $status);

// TwitterOAuthのインスタンスを生成
$twitter = new TwitterOAuth(
  $consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret
);

// Twitterに発言をPOST
$response = $twitter->post($method, $parameters);
$http_info = $twitter->http_info;
$http_code = $http_info["http_code"];

if($http_code == "200" && !empty($response)) {
  print "ok\n";
} else {
  print "ng\n";
}
?>

これをoauth_test.phpで保存し,phpコマンドから実行してみましょう。

php oauth_test..php

正しく発言できたでしょうか。

今回は基本的な発言方法とOAuthの認証情報の取得およびPHPのTwitterライブラリを紹介しました。次回はTwitter botの種類によってどのようなプログラムを組むといいかの事例を紹介したいと思います。

著者プロフィール

松鵜琢人(まつうたくと)

1980年生まれの大阪府出身。通信会社に就職後,転職してサーバ管理者兼プログラマーに。よく使う言語はシェルスクリプトとPerl。プラスワンデジタル所属。Gentoo Linux Developerでもある。

コメント

  • ボットつくりについて

    教えていただきたくお願いいたします。07050201328

    Commented : #1  あいクリニック (2010/08/02, 17:39)

コメントの記入