检查Twitter帐户是否存在

时间:2015-02-26 18:45:59

标签: php twitter

我需要检查用户的推文名称是否存在。

我正在使用亚伯拉罕·威廉姆斯的TwitterOAuth来做到这一点,但我总是得到假的......

以下是代码:

require_once 'includes/twitteroauth/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;

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

function find_users(array $users){
    $founds = array();
    $toa = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

    // Up to 100 users per request.
    $userAry = array_slice($users, 0, 100);

    // Init with "not found" for all users.
    foreach ($userAry as $user) {
        $founds[$user] = false;
    }

    // Find existing users by "screen_name".
    $userObjs= $toa->post('users/lookup', array('screen_name' => implode(',', $userAry)));

    // Set "found" for existing users.
    foreach ($userObjs as $userObj) {
        $founds[$userObj->screen_name] = true;
    }

    return $founds;
}

这是我的电话(我把一些我知道存在的名字和他们的寄存器名称放在那里,只是为了确定):

if ($pass AND !empty($twitter)){
    $twitter_array = array($twitter, "Jayztwocents", "Barnacules", "Barnacules Nerdgasm", "Inu-ki", "Inukii", "HiRezStew", "schisam", "twitter", "twitterapi");
    $check_twitter = find_users($twitter_array);
    var_dump($check_twitter);
    die;
    if (!$check_twitter[0]){
        $message .= "<li>This twitter account does not exist.</li>";    $pass = FALSE;  $twitter_class = "required";
    }
}

这是我的var_dump:

的结果
array(11) {
    ["MiChAeLoKGB"]=> bool(false)
    ["Jayztwocents"]=> bool(false)
    ["Barnacules"]=> bool(false)
    ["Barnacules Nerdgasm"]=> bool(false)
    ["Inu-ki"]=> bool(false)
    ["Inukii"]=> bool(false)
    ["HiRezStew"]=> bool(false)
    ["schisam"]=> bool(false)
    ["twitter"]=> bool(false)
    ["twitterapi"]=> bool(false)
    [""]=> bool(true) 
}

为什么它总是返回false,为什么heck是最终的emty字符串是真的?

Ps。:所有密钥/秘密都已正确设置。

PP:我搜索了很多,在这个网站上有关于它的问题,但它们都使用了被禁用的旧API。

1 个答案:

答案 0 :(得分:0)

嗯,我发现我需要再次创建我的令牌,现在效果很好:)

无论如何,根据我的需要,我需要只获得单个用户,即使twitter名称写错了上限(MYtwiTTERnAme而不是MyTwitterName),我也需要它才能工作,所以我稍微更改了一下这个功能。

在这里,如果有人需要这样的东西:

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

    $userObjs= $toa->post('users/lookup', array('screen_name' => $user));

    if (isset($userObjs->errors)){
        return FALSE;
    }elseif (strtolower($userObjs[0]->screen_name) == strtolower($user)){
        return $userObjs[0]->screen_name;
    }else{
        return FALSE;
    }
}

以下是你如何称呼并测试它:

$check_twitter = find_users($twitter);
if ($check_twitter === FALSE){
    $message .= "<li>This twitter account does not exist.</li>";    $pass = FALSE;  $twitter_class = "required";
}else{
    $twitter = $check_twitter;
}