Twitter API & PHP を使った自動フォロー返し機能の実装例を紹介します。下記の twitteroauth ライブラリを使用して簡単に実装します。ソースコードは Twitter API Version 1.1 に対応してます。

また、今回紹介する自動フォロー返し機能を使って作成した Twitter ボットのサンプルです。ご参考まで。

自動フォロー返し機能のコード全容

自動フォロー返し機能は、ライブラリを利用するとシンプルに書けます。下記が全コードです。

<?php
require_once 'lib/twitteroauth.php';

define('CONSUMER_KEY', 'your_consumer_key');
define('CONSUMER_SECRET', 'your_consumer_secret');
define('ACCESS_TOKEN', 'your_access_token');
define('ACCESS_TOKEN_SECRET', 'your_access_token_secret');

function auto_follow()
{
    $toa = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

    $followers = $toa->get('followers/ids', array('cursor' => -1));
    $friends = $toa->get('friends/ids', array('cursor' => -1));

    foreach ($followers->ids as $i => $id) {
        if (empty($friends->ids) or !in_array($id, $friends->ids)) {
            $toa->post('friendships/create', array('user_id' => $id));
        }
    }
}

auto_follow();

実行方法

実行するためにファイルを準備しましょう。

コードとライブラリファイルを置いたファイル構造は下記の通りです。上記のコードを auto_follow.php として保存し、また、twitteroauth ライブラリは ./lib 下に置いています。

$ ls -R ./
lib/                            auto_follow.php

./lib:
OAuth.php               twitteroauth.php

実行には Twitter API キーが必要です。キーは、https://dev.twitter.com/apps/new から Twitter アカウントでログインして取得できます。

※重要: API キー取得の際のアプリケーション設定で、Application type の Access には "Read and Write" を選択してください。

ソースコード冒頭の 'your_xxx_xxx' の部分は、自分で取得したものに変更してください。

define('CONSUMER_KEY', 'your_consumer_key');
define('CONSUMER_SECRET', 'your_consumer_secret');
define('ACCESS_TOKEN', 'your_access_token');
define('ACCESS_TOKEN_SECRET', 'your_access_token_secret');

そして、実行は、

$ php auto_follow.php

とするだけです。これを cron で定期的(例えば1時間毎)に実行すれば、自動フォロー返しシステムが実現できます。

では、自動フォロー返しコードを

  1. フォロワーのユーザ ID を取得
  2. フォローしているユーザの ID を取得
  3. ユーザをフォローする

の3つのコードブロックに分けて解説します。

コード解説: フォロワーのユーザ ID の取得方法

フォロワーのユーザ ID の取得は、twitteroauth ライブラリを利用するとシンプルに書くことができ、

    $followers = $toa->get('followers/ids', array('cursor' => -1));

とするだけです。

コード解説: 自分がフォローしているユーザ ID の取得方法

自分がフォローしているユーザー ID のリストについても、取得はシンプルに、

    $friends = $toa->get('friends/ids', array('cursor' => -1));

で行うことができます。

コード解説: フォロー機能を実装する

3つ目のフォロー機能を見てみましょう。16~20 行目の箇所です。

ids as $i => $id) {
        if (empty($friends->ids) or !in_array($id, $friends->ids)) {
            $ret = $toa->post('friendships/create', array('user_id' => $id));
        }
    }

ここでは、自分のフォロワーのリストを探索し、その中で自分がフォローしていないユーザがいればフォローを行います。フォローは post() の引数に friendships/create を指定し、さらに、フォローしたいユーザ ID を array('user_id' => $id)) と指定することで行うことができます。

コード解説: さいごに

最後は auto_follow() の呼び出しです。

auto_follow();

自動フォロー返し機能のソースコード解説は以上です。実装の参考にしていただければと思います。