自动回复Twitter

Joe*_*phy 2 php twitter twitter-follow

我现在有几千个Twitter关注者,直到现在我一直在关注他们.我现在想用PHP自动化这个过程,因为它可能需要很长时间才能追随所有人.

我找到了一个由亚伯拉罕·威廉姆斯创建的PHP推特库,并开始编写一些代码.

但是,每次运行脚本时,我需要关注的用户数量都是不正确的!这是我编码中的错误,还是这就是Twitter API的工作原理?

这是我的代码:

<?php

require_once 'twitteroauth/twitteroauth.php';

define('CONSUMER_KEY', '');
define('CONSUMER_SECRET', '');
define('ACCESS_TOKEN', '');
define('ACCESS_TOKEN_SECRET', '');

ob_start();
set_time_limit(0);

function autoFollow($action){
    //auth with twitter.
    $toa = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

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

    foreach ($followers->ids as $i => $id) {
        $followerIds[] = $id;
    }

    //get the last 5000 people you've followed
    $friends = $toa->get('friends/ids', array('cursor' => -1));
    $friendIds = array();
    foreach ($friends->ids as $i => $id) {
        $friendIds[] = $id;
    }


    if($action=="unfollow"){
        //unfollow all users that aren't following back.
        $usersNotFollowingBackcount = 0;
        $usersNotFollowingBack = array();

        foreach($friendIds as $id){ 
            if(!in_array($id,$followerIds) ){
                array_push($usersNotFollowingBack, $id); 
                //unfollow the user
                //$toa->post('friendships/destroy', array('id' => $id));
                $usersNotFollowingBackcount++;
                echo $usersNotFollowingBackcount.' users unfollowed so far</br>';
                ob_flush();
                flush();
            }
        } 

        echo sizeof($usersNotFollowingBack).' users who weren\'t following you back have now been unfollowed!';
    }
    if($action =="follow"){                 
        //follow all users that you're not following back.
        $usersYoureNotFollowingBackcount = 0;
        $usersYoureNotFollowingBack = array();

        foreach($followerIds as $id){ 
            if(!in_array($id,$friendIds) ){
                array_push($usersYoureNotFollowingBack, $id); 
                //follow the user
                //$toa->post('friendships/create', array('id' => $id));
                $usersYoureNotFollowingBackcount++;
                echo $usersYoureNotFollowingBackcount.' users followed back so far</br>';
                ob_flush();
                flush();
            }
        } 

        echo sizeof($usersYoureNotFollowingBack).' users have been followed back!';
    }
}

if($_GET['action']){
    autoFollow($_GET['action']);
    ob_end_flush();
}
?>
Run Code Online (Sandbox Code Playgroud)

ksg*_*g91 8

我刚用我的推特账户在我的笔记本电脑上运行你的代码,我得到了正确的价值观.您的代码在您身边是正确的.

如果跟随者或您关注的人数超过5000或者他们之间的差异超过5000,则可能会出现不一致,因为有些用户不会出现在最后5000名粉丝中,因为在他之后,其他5000名用户已经关注了您和您从未跟着他.所以这个角色会被遗漏.

如果您的问题是这样,某些用户在运行代码时没有得到关注,那可能是因为Twitter的API速率限制.

OAuth调用每小时允许350个请求,并根据请求中使用的oauth_token进行测量.

请查看此内容以获取更多信息:https://dev.twitter.com/docs/rate-limiting 因此,由于twitter的速率限制,将无法访问超过350名用户.