Проверьте, существует ли имя пользователя 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!";
}
?>