В правом сайдбаре этого блога теперь висит моя “визитная карточка”, на которой отображается количество моих читателей в Twitter. В этой небольшой заметке я поделюсь способом, как это можно реализовать.

Полгода назад твиттер представил новую версию Twitter API 1.1, вместе с которым вступили в силу новые правила игры. Теперь ни один метод не может быть вызван без аутентификации, для которой теперь используется протокол OAuth 2.0.
Создание Twitter-приложения
Первый шаг для подключения счетчика фолловеров – создание Твиттер-приложения и получение пользовательских ключей, которые требуются для проведения OAuth 2.0 аутентификации. Для этого:
- Перейдите по ссылке https://dev.twitter.com/apps и войдите с данными своего Твиттер-аккаунта;
- Создайте новое приложение (application)
- Заполните поля в форме и создайте свое приложение
- На странице приложения кликните “Create my access token”
Теперь у вас есть ключи. Однако, для нашего счетчика понадобятся только Consumer key и Consumer secret
Получение количества читателей в Twitter
Код ниже используется для получения количества читателей в Twitter для использования на сайте WordPress, однако, желающие могут легко его преобразовать для своих нужд. Он хорошо прокомментирован и должен располагаться в файле functions.php в папке вашей темы. Естественно, в него нужно только подставить ваши значения Consumer key и Consumer secret.
function getTwitterFollowers($screenName = 'codeforest')
{
// некоторые переменные
$consumerKey = 'ВАШ_CONSUMER_KEY';
$consumerSecret = 'ВАШ_CONSUMER_SECRET';
$token = get_option('cfTwitterToken');
// получить число фолловеров из кеша
$numberOfFollowers = get_transient('cfTwitterFollowers');
// кешированная версия не существует или устарела
if (false === $numberOfFollowers) {
// getting new auth bearer only if we don't have one
if(!$token) {
// подготовка данных
$credentials = $consumerKey . ':' . $consumerSecret;
$toSend = base64_encode($credentials);
// аргументы http post
$args = array(
'method' => 'POST',
'httpversion' => '1.1',
'blocking' => true,
'headers' => array(
'Authorization' => 'Basic ' . $toSend,
'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8'
),
'body' => array( 'grant_type' => 'client_credentials' )
);
add_filter('https_ssl_verify', '__return_false');
$response = wp_remote_post('https://api.twitter.com/oauth2/token', $args);
$keys = json_decode(wp_remote_retrieve_body($response));
if($keys) {
// сохранение токера в таблице wp_options
update_option('cfTwitterToken', $keys->access_token);
$token = $keys->access_token;
}
}
// мы должны предъявить токен откуда бы мы его не получили
$args = array(
'httpversion' => '1.1',
'blocking' => true,
'headers' => array(
'Authorization' => "Bearer $token"
)
);
add_filter('https_ssl_verify', '__return_false');
$api_url = "https://api.twitter.com/1.1/users/show.json?screen_name=$screenName";
$response = wp_remote_get($api_url, $args);
if (!is_wp_error($response)) {
$followers = json_decode(wp_remote_retrieve_body($response));
$numberOfFollowers = $followers->followers_count;
} else {
// получить старое значение и выйти
$numberOfFollowers = get_option('cfNumberOfFollowers');
// раскомментировать для дебага
//die($response->get_error_message());
}
// кэш на один час
set_transient('cfTwitterFollowers', $numberOfFollowers, 1*60*60);
update_option('cfNumberOfFollowers', $numberOfFollowers);
}
return $numberOfFollowers;
}
Для вызова этой функции в шаблоне достаточно использовать
echo getTwitterFollowers('your_screen_name');
Теперь можно без труда добавлять отображение счетчика фолловеров в Твиттере в любое место на сайте.
Полезная статья? Их будет больше, если вы поддержите меня!
