Проверьте, существует ли имя пользователя Twitter

Есть ли способ проверить, существует ли имя пользователя Twitter? Без аутентификации с помощью OAuth или базовой аутентификации twitter?

Ответы

Ответ 1

В соответствии с api docs вы можете передать адрес электронной почты пользователю / show method, я бы предположил, что если пользователь не существовал, вы бы вернулись 404, что должно позволить вам определить, является ли пользователь существует.

например: http://twitter.com/users/[email protected]

результат, если не существует:

<?xml version="1.0" encoding="UTF-8"?> 
<hash> 
  <request>/users/[email protected]</request> 
  <error>Not found</error> 
</hash

Ответ 2

Как сейчас, вам лучше использовать API, который использует форма регистрации, чтобы проверить доступность имени пользователя в реальном времени. Запросы имеют формат:

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

И вы получите ответ JSON с ключом valid, который даст вам истинное значение, если имя пользователя может быть зарегистрировано:

{"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" выше), или имя пользователя фактически принято, но по какой-то причине учетная запись исчезла. Например, имя пользователя 'mort' дает 404 на https://twitter.com/mort, но помечается как принятое на https://twitter.com/users/username_available?username=mort.

Ответ 3

Вы также можете использовать 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>

Ответ 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;
    }
}

Ответ 5

Вот как это работает на PHP:

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

if ([email protected]($user_infos, 'r'))
{
return false;
}
return true;

Ответ 6

Вы можете попытаться захватить страницу http://twitter.com/username и прочитать ответ, чтобы узнать, есть ли у вас "К сожалению, эта страница не существует!" стр.

Edit:

Как отметил в комментарии @Pablo Fernandez в комментарии, будет лучше (быстрее и надежнее) проверить заголовок ответа, который будет "404 не найден", если пользователь не существует.

Ответ 7

Это сработало для меня, близко к тому, что отправил sferik.

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

Ответ 8

Используя Ruby, вы можете установить драгоценный камень twitter, а затем определить следующий метод:

require 'twitter'

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

Затем просто передайте имя или идентификатор пользователя Twitter вашему методу, например:

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

Ответ 9

Вы можете попробовать:

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