Среда, 21 марта 2018 01:07

Ruby on Rails: Twitter ID and username converter

Оцените материал
(0 голосов)

Кому и зачем нужна конвертация между именем пользователя Twitter и идентификатором учетной записи?

Скажу сразу - в абсолютном большинстве случаев обычному пользователю Твиттера это совершенно не нужно; здесь, скорее, сфера интересов разработчиков, профессионально работающих с Twitter API. Коротко и точно об этом рассказывает страничка TweeterID, удобного сервиса, позволяющего конвертацию в обе стороны: получение идентификатора по имени учетной записи и получение имени учетки (@handle) по ID.

 

Что такое TwitterID?
Идентификатор Twitter - уникальное значение, которое имеет каждая учетная запись в Твиттере. У двух людей нет одинакового идентификатора. Хотя учетная запись может изменить свой @handle (имя учетной записи), она никогда не сможет изменить свой Twitter-идентификатор.

Как вы можете использовать TweeterID?
TweeterID позволяет вам легко найти любое имя пользователя (@handle) в Твиттере, и узнать, что именно оно соответствует данному идентификатору. Кроме того, вы также можете использовать его для преобразования идентификатора в имя пользователя.

Как использовать API Twitter с идентификаторами?
Использование конвертера позволяет разработчикам, работающим с API Twitter, легко переключаться между использованием первичного ключа идентификатора Twitter и общедоступным именем пользователя (или @handle) учетной записи.

  

Впрочем, TweeterID, при ближайшем рассмотрении, оказывается не столь уж и удобен: на момент подготовки к публикации этого материала он далеко не лучшим образом обрабатывает конвертацию в ID имен твиттер-аккаунтов, содержащих только цифры. Например, сервис откровенно лагает при попытке получить ID по 777 или @777, это касается и иных случаев, когда имя учетки содержит только цифры (это совершенно не запрещено правилами Твиттера). Что, в частности, и послужило поводом (если не причиной) написать аналог, свободный от этого недостатка. Вы можете попробовать; @777 вернет теперь совершенно иной ответ, нежели аналогичный запрос в TweeterID:

 

К сожалению, нет возможности в настоящий момент показать демо.

 

Итак, сконфигурируем client обычным для gem 'twitter' способом:

 

client = Twitter::REST::Client.new do |config|
config.consumer_key = ENV['TWI_KEY']
config.consumer_secret = ENV['TWI_SECRET']
config.access_token = ENV['TWI_TOKEN']
config.access_token_secret = ENV['TWI_TOKEN_SECRET']
end

 

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

 

client.user("cmirnow").id => 312301389

 

или, наоборот, получим имя пользователя по ID:

 

client.user(312301389).screen_name => cmirnow

 

, для проверки же ввода - были ли введены только цифры, что однозначно определяет ID, или ввод был иной - воспользуемся Active Model Validations, provides a full validation framework to your objects, т.е. родным для Rails механизмом, работающим буквально "из коробки". Например, что-нибудь вроде этого:

 

class Twitterid
include ActiveModel::Model
attr_accessor :key
validates :key, presence: true, numericality: { only_integer: true }
end

 

Впрочем, здесь уже полный простор для творческой фантазии.

Последнее изменениеСреда, 21 марта 2018 01:55

Оставить комментарий

Добавьте ваш комментарий

В блоге