Check if twitter username exists

落花浮王杯 提交于 2019-11-29 08:20:08

问题


Is there a way to check if a twitter username exists? Without being authenticated with OAuth or the twitter basic authentication?


回答1:


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



回答2:


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.




回答3:


You can also use the API with username :

eg : 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>



回答4:


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;
    }
}



回答5:


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;



回答6:


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.




回答7:


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



回答8:


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



回答9:


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


来源:https://stackoverflow.com/questions/2845243/check-if-twitter-username-exists

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!