开发者

Check if twitter username exists

Is there a way to check if a twitter username exists? Without being authentica开发者_JAVA技巧ted with OAuth or the twitter basic authentication?


UPDATE 2021: This API is not available.

As of right now, you're better off using the API the signup form uses to check username availability in realtime. Requests are of the format:

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

And give you a JSON response with a valid key giving you a true if the username can be registered:

{"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!"}

The reason this is better than checking for 404 responses is that sometimes words are reserved (like 'root' above), or a username is actually taken but for some reason the account is gone from the Twitter front end.


UPDATE

The Twitter REST API v1 is no longer active.

So use https://api.twitter.com/1.1/users/show.json?screen_name=username


You can also use the API with username :

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

Will give you :

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

Or if not exist :

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


As API v1 is no longer available, here is another way to check if a twitter account exists. The page headers of a non existing account contain 404 (page not found).

function twitterAccountExists($username){
    $headers = get_headers("https://twitter.com/".$username);
    if(strpos($headers[0], '404') !== false ) {
        return false;
    } else {
        return true;
    }
}


Here is how it works on PHP :

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

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


This worked for me, close to what sferik has posted.

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


You can try to grab the http://twitter.com/username page and read the response to see if you get the "Sorry, that page doesn’t exist!" page.

Edit:

As @Pablo Fernandez mentioned in a comment, it will be better (faster, more reliable) to check the response header, which will be "404 not-found" if the user doesn't exist.


Using Ruby, you could install the twitter gem and then define the following method:

require 'twitter'

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

Then, simply pass in a Twitter user name or id to your method, like so:

user_exists?("sferik") #=> true
user_exists?(7505382) #=> true


You can try:

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


To achive what you are looking for, you could use a thirdparty service such as shadowban.eu they provide an API endpoint that will return information about a twitter user in a JSON format:

API: https://shadowban.eu/.api/USERNAME_HERE

Response:
profile protected false exists true screen_name "cbbbc" has_tweets true sensitives
possibly_sensitive 1 counted 68 possibly_sensitive_editable 28 tests
ghost
ban false typeahead true search "1411036459847593990" more_replies
ban true in_reply_to "1391745382447730688" stage 1 tweet "1391769295848419329" timestamp 1625596207.462817


UPDATE: This API is not available since 2012.

According to the api docs you can pass an email address to the user/ show method, I would assume that if a user didn't exist you'd get back a 404, which should allow you to determine whether or not the user exists.

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

result if not exist :

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜