Authentication 检查twitter用户名是否存在

Authentication 检查twitter用户名是否存在,authentication,twitter,oauth,exists,Authentication,Twitter,Oauth,Exists,有没有办法检查twitter用户名是否存在? 未经OAuth或twitter基本身份验证?根据api文档,您可以将电子邮件地址传递给用户/ show方法,我假设如果用户不存在,您会返回 404,它应该允许您确定用户是否 存在 例如: 结果(如果不存在): <?xml version="1.0" encoding="UTF-8"?> <hash> <request>/users/show.xml?email=tur...@example.com</

有没有办法检查twitter用户名是否存在?
未经OAuth或twitter基本身份验证?

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

例如:

结果(如果不存在):

<?xml version="1.0" encoding="UTF-8"?> 
<hash> 
  <request>/users/show.xml?email=tur...@example.com</request> 
  <error>Not found</error> 
</hash
<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <request>/1/users/show.xml?screen_name=tarnfeldezf</request>
  <error>Not found</error>
</hash>

/users/show.xml?email=tur..。@example.com
找不到

您可以尝试获取
http://twitter.com/username
page并阅读回复,查看是否出现“抱歉,该页面不存在!”页面

编辑:
正如@Pablo Fernandez在评论中提到的,检查响应标题会更好(更快、更可靠),如果用户不存在,响应标题将为“404未找到”。

您也可以使用带有用户名的API:

例如:

将为您提供:

<?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>/users/show.xml?email=tur...@example.com</request> 
  <error>Not found</error> 
</hash
<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <request>/1/users/show.xml?screen_name=tarnfeldezf</request>
  <error>Not found</error>
</hash>

/1/users/show.xml?screen_name=tarnfeldezf
找不到

以下是它在PHP上的工作原理:

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

if (!@fopen($user_infos, 'r'))
{
return false;
}
return true;

使用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

这对我来说很有效,接近斯弗里克发布的内容

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

现在,最好使用注册表单用来实时检查用户名可用性的API。请求的格式如下:

https://twitter.com/users/username_available?username=whatever
并给您一个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前端消失。

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

您可以尝试:

<?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!";
} 
?>


有一次,我在网上与某人进行了一次有趣的讨论,他抱怨推特或类似的服务会告诉你输入的用户名或密码中的哪一个是错误的,他认为这是一种糟糕的安全设计。这正是我所说的。@Pascal Cuoq:我认为Twitter让你在不强迫你自己注册的情况下看到别人在发布什么,这是一件更积极的事情。@Bill我会检查http响应代码,而不是检查“抱歉,该页面不存在”,在这种情况下,404不是-found@Pablo:那肯定会更可靠。我没有费心去检查,也没有意识到这是一个定制的404页面。只是检查了一下(2020年4月)即使用户不存在,Twitter也会返回200 OK。问题是我没有他们的电子邮件地址。Twitter API不再支持通过电子邮件地址进行查找。如果你想成为远程网站的好公民,你显然需要依靠发布的API和OAuth来实现这一点。有了它们,用户查找变得非常简单:实现OAuth也非常简单,因为现有的库可以简化这一过程——我们将在应用程序中增加五行如果您在API之外自动执行此操作,您可能会受到Twitter的速率限制/阻止。您应该重新选择所选的答案。此解决方案的唯一问题是您尝试调用的端点未记录且不受支持,您的应用程序将面临被阻止的危险。我认为JSON URL适用于1.1 API:,但是应该与authenticationIt一起使用,它不会告诉您用户名是否真的可用。挂起和删除的页面返回404状态代码