我需要检查用户的推文名称是否存在。
我正在使用亚伯拉罕·威廉姆斯的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。答案 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;
}