c/fe

http://d.hatena.ne.jp/uzulla から移行しました。

一括で複数ユーザーをフォローする(させる)PHP書いた。

いろんなのを切った貼ったして作った。
Services::TwitterとHTTP::OAuthが動作に必要なので、Pearなどで入れるとよい。
$twitter->setOption( 'format', 'xml' );
の行は、PHPのバージョンが新しければ(JSON関数が使えるならば)不要。


このPHPにアクセスすると、TwitterのAuthorizationページが表示されて、Allowすると指定のユーザーをフォローして、最後にCOMPLETE_URLにリダイレクトする。

define('CONSUMER_KEY', 'コンシューマーキーを入れる');
define('CONSUMER_SECRET', 'シークレットキーを入れる');
define('CALLBACK_URL',  'このPHPの設置URLを書く');
define('COMPLETE_URL',  '完了後、リダイレクトするURLを入れる');

$follow_id_array = array('uzulla','twitter_user_name' ); //フォローするユーザーのscreen nameを配列で入れる。

//--main
require_once 'Services/Twitter.php';
require_once 'HTTP/OAuth/Consumer.php';

session_start();

if (isset($_SESSION['token'], $_SESSION['token_secret'], $_GET['oauth_verifier'])) {
  $twitter = new Services_Twitter;
  $twitter->setOption( 'format', 'xml' );

  $oauth = new HTTP_OAuth_Consumer(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['token'], $_SESSION['token_secret']);
  $oauth->getAccessToken('http://twitter.com/oauth/access_token', $_GET['oauth_verifier']);
  $twitter->setOAuth($oauth);

  foreach($follow_id_array as $screenname) {
    try {
      $msg = $twitter->friendships->create($screenname);
    } catch (Exception $e) {
      //echo $e->getMessage(); // すでにフォロー済みだとエラーがでるので
    }
  }
  session_destroy();
  http_redirect( COMPLETE_URL );
} else {
  $oauth = new HTTP_OAuth_Consumer(CONSUMER_KEY, CONSUMER_SECRET);
  $oauth->getRequestToken('http://twitter.com/oauth/request_token', CALLBACK_URL);

  $_SESSION['token'] = $oauth->getToken();
  $_SESSION['token_secret'] = $oauth->getTokenSecret();

  $url = $oauth->getAuthorizeUrl('http://twitter.com/oauth/authorize');
  http_redirect($url); 
}

//--function
function http_redirect($url) { // pecl_http があれば不要
  header('Location: '.$url );
  exit;
}