有没有办法检查 Twitter 用户名是否存在?没有通过 OAuth 或 twitter 基本身份验证进行身份验证?
10 回答
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 前端消失。
更新
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>
由于 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;
}
}
这是它在 PHP 上的工作方式:
$user_infos = 'http://api.twitter.com/1/users/show.xml?screen_name='.$username;
if (!@fopen($user_infos, 'r'))
{
return false;
}
return true;
这对我有用,接近 sferik 发布的内容。
def twitter_user_exists?(user)
Twitter.user(user)
true
rescue Twitter::Error::NotFound
false
end
您可以尝试抓取http://twitter.com/username
页面并阅读响应以查看是否收到“抱歉,该页面不存在!” 页。
编辑:
正如@Pablo Fernandez 在评论中提到的那样,检查响应标头会更好(更快,更可靠),如果用户不存在,它将是“404 not-found”。
使用 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
你可以试试:
<?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!";
}
?>
为了实现您正在寻找的内容,您可以使用第三方服务,例如 shadowban.eu,它们提供了一个 API 端点,该端点将以 JSON 格式返回有关 twitter 用户的信息:
API: https ://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
更新:此 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