ぜんぶなんとかなる

ふしみの雑文

PEAR::HTTP_OAuthでxAuthする

TwitterでxAuthを使う試み」http://written.4403.biz/archives/2010/03/twitter-xauth.html で紹介されているコード、PEARのバージョンが古かったので自分で書いた。

Installed packages, channel pear.php.net:
=========================================
HTTP_OAuth           0.2.3    alpha
HTTP_Request         1.4.4    stable
HTTP_Request2        2.0.0RC1 beta
PEAR                 1.9.4    stable
Services_Twitter     0.6.3    beta

Services_Twitterはもちろんだけど、OAuthも頻繁にアップデートされるので注意が必要。

以下、いちおう動くコード。

require_once("HTTP/OAuth.php");
require_once("HTTP/OAuth/Consumer.php");

$parameters = array(
    'x_auth_mode'     => 'client_auth',
    'x_auth_username' = $screen_name,
    'x_auth_password' => $password,
);

$xAuthAccessTokenUrl = 'https://api.twitter.com/oauth/access_token';

try {
	$oauth = new HTTP_OAuth_Consumer($ini["consumer_key"], $ini["consumer_secret"]);
	
	// ssl 証明書チェックをパスするための処理
	$request = new HTTP_Request2();
        $request->setConfig('ssl_verify_peer', false);
        $consumerRequest = new HTTP_OAuth_Consumer_Request;
        $consumerRequest->accept($request);
        $oauth->accept($consumerRequest);
	$oauth->sendRequest("https://api.twitter.com/oauth/access_token", $parameters, "POST");    

        $response = $oauth->getLastResponse();
} catch (Exception $e) {
	var_dump($e);
	print_r($e);
        die();
}

phpでxAuthなんてマズ使わないけど、それだけになかなか資料がないので書いてみたメモ。