Twitter API:Url搜索用户名

时间:2013-05-23 23:35:26

标签: twitter-bootstrap twitter twitter-oauth

我有一个网站列表,我想看看他们是否有推特账号。我很好奇是否在API中搜索了用户名,或者是这种性质的东西。我一直在阅读和环顾四周;但是,我做得很短。当我可以运行一个函数来为我完成工作时,我不想手动执行此操作。非常感谢关于这个主题的一些反馈。

美好的一天!

2 个答案:

答案 0 :(得分:5)

正如上面的评论中所解释的,Twitter API的版本1已弃用,很快就会被完全删除。这意味着简单的请求在删除后将不再有效,这很快就会发布!

基本上,从那时起,为了从Twitter获取任何类型的数据,您需要使用其版本 1.1 api进行经过身份验证的请求

I wrote a post here 通过漂亮的图片为需要的人解释了使用PHP调用1.1版api所需的确切步骤。

在您完整阅读上述文章后,这就是您想要做的事情。

  1. 在twitter dev网站上设置应用程序。这很简单,你和twitter之间都有一组键(总共有四个键,我的帖子解释了这一点)。
  2. 包含PHP脚本,所有内容都在我的帖子和github上。
  3. 从那时起,您只需将变量用户名传递给PHP,并使用该变量检查它们是否存在使用v1.1 api。
  4. 我假设你知道一点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()结果并查找如何确定用户是否存在。显然,它不包含实际用户,可能包含falsenull

    正如我不知道的那样,我们可以说$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
}

我不确定是否有更好的方法来检查用户名是否存在。也许只是使用检查错误代码?