我有一个网站列表,我想查看他们是否有 Twitter 帐户。我很好奇 API 中是否有用户名的 url 搜索,或者类似的东西。我一直在阅读和环顾四周;但是,我做得不够。当我可以运行一个函数来为我完成这项工作时,我不想手动执行此操作。非常感谢有关此主题的一些反馈。
再会!
我有一个网站列表,我想查看他们是否有 Twitter 帐户。我很好奇 API 中是否有用户名的 url 搜索,或者类似的东西。我一直在阅读和环顾四周;但是,我做得不够。当我可以运行一个函数来为我完成这项工作时,我不想手动执行此操作。非常感谢有关此主题的一些反馈。
再会!
正如上面评论中所解释的,twitter API 的第 1 版已被弃用,很快将被完全删除。这意味着简单的请求一旦被删除就不再起作用,这很快就会实现!
基本上,从那时起,为了从 twitter 获取任何类型的数据,您需要使用他们的1.1版api发出经过身份验证的请求。
我在这里写了一篇文章,用漂亮的图片为需要它们的人解释了使用 PHP 调用其 1.1 版 api 所需的确切步骤。
在您彻底阅读上述帖子之后,这就是您想要做的事情。
我假设你知道一点 PHP。这就是您使用twitter v1.1 api检查用户名是否存在的方式。
查看文档以获取用户的时间线。文档声明您可以使用 screen_name 参数。你也知道它需要一个GET 请求。
有了上述信息和我的课程,您可以很容易地为用户执行请求。
require_once "TwitterAPIExchange.php";
// As my post explains, these are the keys you get from the twitter dev site
$settings = array(
'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
'consumer_key' => "YOUR_CONSUMER_KEY",
'consumer_secret' => "YOUR_CONSUMER_SECRET"
);
// This is the username you want to check. You can get it however you want. Just place it into this $username variable.
$username = 'USERNAMEHERE';
$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$requestMethod = 'GET';
$getfield = '?screen_name='.$username;
$twitter = new TwitterAPIExchange($settings);
$result = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
好的,所以结果现在存储在$result
变量中。你可以在这里做你想做的事。您想检查用户是否存在,因此var_dump()
结果并寻找如何确定用户是否存在。显然它不会包含实际用户,它可能包含false
or null
。
正如我不知道的那样,可以说$result->user
等于false
。您只需这样做:
if (!$result->user)
{
echo "The user doesn't exist!";
}
else
{
echo "The user exists!";
}
...或者,速记风格(我喜欢在我的帖子中添加这样的小东西)
echo (!$result->user) ? "Doesn't exist! :(" : "Exists!";
做一点研究,使用:
这是我的代码,用于检查用户是否存在,基于Jimbo非常有用的 PHP 类,如上所述。
首先,使用 json_decode 转换$result
成 PHP 数组。确保将第二个参数设置为,true
这样您就不会在结果数组中获得 Objects:
$result = json_decode($result, true);
现在您必须检查screen_name
数组键是否存在,但 array_key_exists 不会递归地查看多维数组。因此,您需要一个新功能,如下所示:
function array_key_exists_r($needle, $haystack) {
$result = array_key_exists($needle, $haystack);
if ($result) return $result;
foreach ($haystack as $v) {
if (is_array($v)) {
$result = array_key_exists_r($needle, $v);
}
if ($result) return $result;
}
return $result;
}
下面是使它全部工作的最后一段代码。注意我在$result
数组中指向的位置。我基本上是在查看发布第一条推文的用户的 screen_name,因为 Twitter API 返回 $username 中指定的用户时间线。
$result = json_decode($result, true);
if ( array_key_exists_r('screen_name', $result ) ) {
if ( $result[0]['user']['screen_name'] == $username ) {
// The username exists
}
} else {
// The username doesn't exist
}
我不确定是否有更好的方法来检查用户名是否存在。也许只是使用检查错误代码来代替?