21

有没有办法检查 Twitter 用户名是否存在?没有通过 OAuth 或 twitter 基本身份验证进行身份验证?

4

10 回答 10

28

2021 年更新:此 API 不可用。

到目前为止,您最好使用注册表单用来实时检查用户名可用性的 API。请求的格式为:

https://twitter.com/users/username_available?username=whatever

valid如果可以注册用户名,则给你一个带有密钥的 JSON 响应,给你一个 true:

{"valid":false,"reason":"taken","msg":"Username has already been taken","desc":"That username has been taken. Please choose another."}
{"valid":true,"reason":"available","msg":"Available!","desc":"Available!"}
{"valid":false,"reason":"is_banned_word","msg":"Username is unavailable","desc":"The username \"root\" is unavailable. Sorry!"}

这比检查 404 响应更好的原因是,有时会保留字词(如上面的“root”),或者实际使用了用户名,但由于某种原因,该帐户已从 Twitter 前端消失。

于 2014-06-12T13:26:03.663 回答
7

更新

Twitter REST API v1 不再活动。

所以使用 https://api.twitter.com/1.1/users/show.json?screen_name=username


您还可以将 API 与 username 一起使用:

http://api.twitter.com/1/users/show.xml?screen_name=tarnfeld

会给你 :

<?xml version="1.0" encoding="UTF-8"?>
<user>
  ...................
  <screen_name>tarnfeld</screen_name>
  <location>Portsmouth, UK</location>
  .................
  </status>
</user>

或者如果不存在:

<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <request>/1/users/show.xml?screen_name=tarnfeldezf</request>
  <error>Not found</error>
</hash>
于 2010-05-16T20:36:35.177 回答
4

由于 API v1 不再可用,这是检查 Twitter 帐户是否存在的另一种方法。非现有帐户的页眉包含 404(未找到页面)。

function twitterAccountExists($username){
    $headers = get_headers("https://twitter.com/".$username);
    if(strpos($headers[0], '404') !== false ) {
        return false;
    } else {
        return true;
    }
}
于 2014-10-21T18:36:25.303 回答
3

这是它在 PHP 上的工作方式:

$user_infos = 'http://api.twitter.com/1/users/show.xml?screen_name='.$username;

if (!@fopen($user_infos, 'r'))
{
return false;
}
return true;
于 2010-08-15T00:06:01.983 回答
2

这对我有用,接近 sferik 发布的内容。

def twitter_user_exists?(user)
   Twitter.user(user)
   true
rescue Twitter::Error::NotFound
   false
end
于 2012-08-16T20:43:12.677 回答
1

您可以尝试抓取http://twitter.com/username页面并阅读响应以查看是否收到“抱歉,该页面不存在!” 页。

编辑:

正如@Pablo Fernandez 在评论中提到的那样,检查响应标头会更好(更快,更可靠),如果用户不存在,它将是“404 not-found”。

于 2010-05-16T20:02:00.630 回答
1

使用 Ruby,您可以安装 twitter gem,然后定义以下方法:

require 'twitter'

def user_exists?(user)
  Twitter.user(user)
  true
rescue Twitter::NotFound
  false
end

然后,只需将 Twitter 用户名或 ID 传递给您的方法,如下所示:

user_exists?("sferik") #=> true
user_exists?(7505382) #=> true
于 2011-05-25T16:30:43.190 回答
1

你可以试试:

<?php
$user = "toneid";
$contents = @file_get_contents('http://www.twitter.com/'.$user);
if (!$contents) {
    // Report error
    echo "Not a valid user";
    } else {
    // If is a valid url
    echo "OK!";
} 
?>
于 2015-11-16T17:47:00.697 回答
1

为了实现您正在寻找的内容,您可以使用第三方服务,例如 shadowban.eu,它们提供了一个 API 端点,该端点将以 JSON 格式返回有关 twitter 用户的信息:

APIhttps ://shadowban.eu/.api/USERNAME_HERE

响应
profile保护false valse true screen_name“cbbbc”has_tweets真实敏感
可能_敏感1计数68可能_sensive_ecation 28 tests
ghost
an false typead true搜索“more_replies
禁止真实in_reply_to”1391745382447730688“阶段1推文”1391769295848419329“时间戳1625596207.462817

于 2021-07-06T18:35:45.450 回答
0

更新:此 API 自 2012 年以来不可用。

根据 api 文档,您可以将电子邮件地址传递给 user/show 方法,我假设如果用户不存在,您将返回 404,这应该允许您确定用户是否存在。

例如: http: //twitter.com/users/show.xml?email=t...@example.com

结果如果不存在:

<?xml version="1.0" encoding="UTF-8"?> 
<hash> 
  <request>/users/show.xml?email=tur...@example.com</request> 
  <error>Not found</error> 
</hash
于 2010-05-16T20:01:05.047 回答