前回、
Twitter botに発言させてみる
まずはPHPの標準機能を使って発言をしてみます。Twitter用ライブラリを使った発言については後ほど解説します。
<?php
// curlリソースの作成
$curl = curl_init();
// ユーザ名
$username = "(ユーザ名を設定)";
// パスワード
$password = "(パスワードを設定)";
// 発言する文字列を設定する
// プログラムの文字コードがUTF-8の場合はこのまま
$status = "日本語のテスト";
// プログラムの文字コードがSJISの場合はUTF-8に変換
//$status = mb_convert_encoding($status, "UTF-8", "SJIS");
// 発言用のURLを設定(TwitterのAPIドキュメントを参照)
$url = "https://api.twitter.com/1/statuses/update.json";
// POSTフィールドを作成
$postData = array("status" => $status);
// 認証情報を設定
$authData = "$username:$password";
// curlに各種パラメータを設定する
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, $authData);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
curl_setopt($curl, CURLOPT_HEADER, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Expect:"));
$response = curl_exec($curl);
$http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if($http_code == "200" && !empty($response)) {
print "ok\n";
} else {
print "ng\n";
print curl_error($curl);
}
curl_close($curl);
?>
上記のうち、
php test.php
okと表示されたでしょうか?
さて、
また、
OAuthとは
OAuthとは、
OAuthアプリを登録する
Twitter APIでOAuthを利用するためには、
では実際にOAuthアプリを利用してみましょう。まずhttp://

図1のようなTwitterアプリケーションの画面が表示されたら、

必須項目について説明します。必須項目以外は、
アプリケーション名 | Twitterの発言と一緒に |
アプリケーションの説明 | 必須項目ですが、 |
アプリケーションのウェブサイトURL | Twitterの発言と一緒に表示される |
アプリケーションの種類 | Twitter botで利用する場合はクライアントアプリケーションを選択してください。 |
Default Access Type | プログラムからbotに発言させる場合はRead & Writeを選択します。 |
最後にCAPTCHAを正しく入力して保存を押します。
入力内容に不備がなければ、

このうち、
- Consumer key
- Consumer secret
が今回のTwitter botのプログラム作成に必要となる情報です。
これらの情報はhttp://
PHP用Twitterライブラリtwitteroauth
では、
PHPでOAuthに対応したTwitterライブラリはいくつかありますが、
ダウンロードページから最新版
- OAuth.
php - twitteroauth.
php
の2ファイルか確認できるかと思います。今回必要となるファイルはこの2つです。
twitteroauthの設定
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_
利用方法ですが、
php get_token.php
表示されたURLにアクセスし、
正しく入力されると
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_
php oauth_test..php
正しく発言できたでしょうか。
今回は基本的な発言方法とOAuthの認証情報の取得およびPHPのTwitterライブラリを紹介しました。次回はTwitter botの種類によってどのようなプログラムを組むといいかの事例を紹介したいと思います。