参考サイト

OAuthアプリの登録

Twitterアプリを作成するには登録が必須

以下のサイトから行う

http://twitter.com/apps

ログインをして「新しいアプリケーションを追加 »」から登録フォームに進む

以下が入力項目

  • アプリケーションのアイコン
アプリケーションの管理画面で使用するだけ?
  • (必須)アプリケーション名
twitterでつぶやいた際に何でつぶやいたか知らせるのに使用
  • (必須)アプリケーションの説明
何でもおk
  • (必須)アプリケーションのウェブサイトURL
登録時点で実在しなくてもおk
  • 所属会社/団体
プロフィールに公開している名前書いとけばおk
  • サイト
アプリケーション開発元のホームページURL
  • (必須)アプリケーションの種類
Webアプリケーション以外はクライアントアプリケーションを選べばおk
  • (必須)Default Access type
読み書きできるアプリか,読み込みだけのアプリかを選択
  • Twitterでログインする
アプリの配布したユーザにログインを要求するのであればチェック

入力が終わったら「保存する」を押して次に進む

Consumer_keyとConsumer_secretはアプリを動作させる際に必要なのでメモしておく

PHP用Twitterライブラリtwitteroauth

twitteroauthをココからダウンロードする

最新版 0.2.0-beta3(2010/09/10)

abraham-twitteroauth-0.2.0-beta3-0-g76446fa
	|
	+ - abraham-twitteroauth-76446fa
		|
		+ - twitteroauth
			|
			+ - OAuth.php
			|
			+ - twitteroauth.php

OAuth.phpとtwitteroauth.phpがつぶやきに必要なファイル

twitteroauthの設定

つぶやきに必要な$oauth_tokenと$oauth_token_secretの取得

以下のプログラムを作成し実行

実行方法:php get_token.php

※ consumer_keyとconsumer_secretは適宜変更すること

get_token.php

<?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");
}
?>

twitteroauthを使った投稿テスト

つぶやきに必要なデータ一覧

  • Consumer_key
  • Consumer_secret
  • oauth_token
  • oauth_token_secret

下記のプログラムを作成し実行(上記の取得したデータに書き換えること)

実行方法:php bot.php "つぶやき"

※ OAuth.phpとtwitteroauth.phpのパスは適宜変更すること(デフォルトでは同じディレクトリ内に2つのファイルを置いとけばおk)

※ twitteroauth.phpの実行時にエラーを吐く場合は次のようにすればおk

エラー文

PHP Fatal error:  Call to undefined function curl_init() in

php5-curlのインストール

sudo apt-get install php5-curl

bot.php

<?php

function tweetoauth($message){
	// twitteroauth.phpを読み込む。
	require_once("twitteroauth.php");

	// Consumer keyの値
	$consumer_key = "consumer_key";
	// Consumer secretの値
	$consumer_secret = "consumer_secret";
	// Access Tokenの値
	$access_token = "access_token";
	// Access Token Secretの値
	$access_token_secret = "access_token_secret";

	// OAuthオブジェクト生成
	$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
	$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>$message));

	//投稿が失敗したら false を返す
	return false !== $req;
}

//twitter 投稿関数の呼び出し
//実行時の引数の1つ目をつぶやく
tweetoauth("$argv[1]");

?>

以下のプログラムは正常に動かない(一度動いたのに何故に?)

oauth_test.php

<?php

require_once("twitteroauth.php");

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

// OAuthアプリ登録で取得したConsumer secretを設定
$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");
}

?>

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-01-16 (土) 18:03:30 (435d)