我有一个网站列表,我想看看他们是否有推特账号。我很好奇是否在API中搜索了用户名,或者是这种性质的东西。我一直在阅读和环顾四周;但是,我做得很短。当我可以运行一个函数来为我完成工作时,我不想手动执行此操作。非常感谢关于这个主题的一些反馈。
美好的一天!
答案 0 :(得分:5)
正如上面的评论中所解释的,Twitter API的版本1已弃用,很快就会被完全删除。这意味着简单的请求在删除后将不再有效,这很快就会发布!
基本上,从那时起,为了从Twitter获取任何类型的数据,您需要使用其版本 1.1 api进行经过身份验证的请求。
I wrote a post here 通过漂亮的图片为需要的人解释了使用PHP调用1.1版api所需的确切步骤。
在您完整阅读上述文章后,这就是您想要做的事情。
我假设你知道一点PHP。这是您使用twitter v1.1 api检查用户名是否存在的方式。
Take a look at the docs获取用户的时间表。文档声明您可以使用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
或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!";
进行一些研究,使用:
答案 1 :(得分:0)
这是我的代码,根据Jimbo非常有用的PHP类,检查用户是否存在,如上所述。
首先,使用json_decode将$result
转换为PHP数组。确保将第二个参数设置为true
,以便您不会在结果数组中获取对象:
$result = json_decode($result, true);
现在您必须检查screen_name
数组键是否存在,但是array_key_exists不会递归查看多维数组。因此,您需要找到here的新功能:
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
}
我不确定是否有更好的方法来检查用户名是否存在。也许只是使用检查错误代码?