ホーム > 日記 > PEAR::HTTP_OAuthでxAuth

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」でちゃいますね。

カテゴリー: 日記 タグ: