PEAR::HTTP_OAuthでxAuth
xAuthの申請が通ったので試してみた。
via:ウノウラボ Unoh Labs: PECL::oauthでxAuth
require_once 'HTTP/Request2.php';
require_once 'HTTP/OAuth/Consumer.php';
$consumer_key = 'YOUR-CONSUMER-KEY';
$consumer_secret = 'YOUR-CONSUMER-SECRET';
$username = 'YOUR-USER-NAME';
$password = 'YOUR-PASSWORD';
$xauth_access_token_url = 'https://api.twitter.com/oauth/access_token';
$params = array(
'x_auth_username' => $username,
'x_auth_password' => $password,
'x_auth_mode' => 'client_auth',
);
try {
$request = new HTTP_Request2();
$request->setConfig('ssl_verify_peer', false);
$consumerRequest = new HTTP_OAuth_Consumer_Request();
$consumerRequest->accept($request);
$oauth = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret);
$oauth->accept($consumerRequest);
$response = $oauth->sendRequest($xauth_access_token_url,
$params,
HTTP_Request2::METHOD_POST);
if ($response->getStatus() !== 200) {
throw new Exception($response->getBody(), $response->getStatus());
}
} catch (Exception $e) {
echo 'Error';
exit;
}
// oauth_token=xxx&oauth_token_secret=xxx&
// user_id=xxx&screen_name=xxx&x_auth_expires=0
parse_str($response->getBody(), $access_token_info);
// oauth_token, oauth_token_secret, user_id, screen_name,
// x_auth_expires
var_dump($access_token_info);
取得したauth_tokenとtoken_secretを利用してtwitterにポスト。
require_once 'Services/Twitter.php';
require_once 'HTTP/OAuth/Consumer.php';
try {
$twitter = new Services_Twitter();
$oauth = new HTTP_OAuth_Consumer($consumer_key,
$consumer_secret,
$auth_token,
$token_secret);
$twitter->setOAuth($oauth);
$twitter->statuses->update('なうなう');
} catch (Services_Twitter_Exception $e) {
echo (string)$e;
exit;
}
Services_Twitter::sendOAuthRequest()の$methodはPOSTしないと「Incorrect signature」でちゃいますね。
カテゴリー: 日記