有没有办法检查是否存在推特用户名? 没有通过OAuth或twitter基本身份验证进行身份验证?
答案 0 :(得分:24)
截至目前,您最好使用注册表单用于实时检查用户名可用性的API。请求的格式为:
https://twitter.com/users/username_available?username=whatever
如果用户名可以注册,请使用valid
密钥为您提供JSON响应,如果用户名已注册,则为
{"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前端消失。
答案 1 :(得分:6)
您也可以使用带有用户名的API:
例如: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>
答案 2 :(得分: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;
}
}
答案 3 :(得分:3)
以下是它在PHP上的工作原理:
$user_infos = 'http://api.twitter.com/1/users/show.xml?screen_name='.$username;
if (!@fopen($user_infos, 'r'))
{
return false;
}
return true;
答案 4 :(得分:2)
您可以尝试抓住http://twitter.com/username
页面并阅读回复,看看您是否收到“抱歉,该页面不存在!”页。
正如@Pablo Fernandez在评论中提到的那样,检查响应标头会更好(更快,更可靠),如果用户不存在,将会出现“404 not-found”。
答案 5 :(得分:2)
这对我有用,接近sferik发布的内容。
def twitter_user_exists?(user)
Twitter.user(user)
true
rescue Twitter::Error::NotFound
false
end
答案 6 :(得分:1)
根据api文档,您可以将电子邮件地址传递给用户/ 显示方法,我会假设如果用户不存在,你会回来 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
答案 7 :(得分: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
答案 8 :(得分:1)
为了实现您的需求,您可以使用第三方服务,例如 shadowban.eu,他们提供了一个 API 端点,该端点将以 JSON 格式返回有关 Twitter 用户的信息:
API: https://shadowban.eu/.api/USERNAME_HERE
回复:
轮廓
受保护的假
存在真
screen_name "cbbbc"
has_tweets 真
敏感
可能_敏感 1
数了 68
可能_敏感_可编辑 28
测试
鬼
禁止虚假
提前输入真
搜索“1411036459847593990”
更多_回复
禁止真
in_reply_to "1391745382447730688"
阶段1
推文“1391769295848419329”
时间戳 1625596207.462817
答案 9 :(得分:0)
您可以尝试:
<?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!";
}
?>