Работа с API социальных сетей. Часть 2: организация кода

Дата публикации:

А вот и вторая часть нашей статьи, посвященной работе с социальными сетями. Готовы? Сегодня мы расскажем, как организовать код, чтобы добавление новой соцсети не вызвало особых проблем. Но прежде чем приступить, давайте кратко опишем общие моменты. Работая с любой социальной сетью, вы обязательно с ними столкнетесь.

Токены доступа

При авторизации соцсеть дает вам токены доступа. Это либо один токен, либо токен и ключ к нему. Их нужно использовать для выполнения запросов к API. Но эти токены могут перестать работать. В связи с изменением пароля или истечением срока. Поэтому мы рекомендуем всегда обрабатывать ошибки токенов и просить пользователей переподключать их к своим социальным аккаунтам.

Лимиты

Все социальные сети имеют свой лимит запросов. У некоторых он фактически незаметен (Facebook), а у некоторых довольно серьезен (Twitter). Обязательно ознакомьтесь с лимитами на запросы, которые собираетесь выполнять и добавьте логику, которая в случае превышения лимитов, отложит все запросы к соцсетям на определенное время.

Кэширование

Социальные сети довольно часто кэшируют информацию, поэтому вы можете столкнуться с несовпадением количества друзей в API ответе и самой социалке. Это вполне нормально. Если же вам кажется, что ошибка все же имеет место, обратитесь в техподдержку.

Pagination

Как вы понимаете, социальные сети объединяют огромное количество пользователей, генерирующих просто неисчислимое количество контента. Если бы они использовали стандартную пагинацию, мы бы наблюдали следующую ситуацию: пока юзер читает первые 10 постов из ленты, его контакты могут создать еще пять. И тогда на второй странице он бы увидел уже знакомые ему пять постов. Именно поэтому все социальные сети работают либо с курсором, либо с граничными параметрами.

Курсор — это та же страница, только вместо номера передается специальный ключ, который социальная сеть вернула в первом запросе. В последней странице этот ключ будет пустым. Это означает, что данных больше нет.

Граничные значения — это, как правило, timestamp или id записи. Они передаются вместе с каждым запросом, и пользователь не получает более новые посты, чем заданный ограничитель.

Как правило, все гемы из коробки работают с пагинацией. И вам достаточно всего лишь понимать ее принцип. Однако существуют нюансы, применимые для некоторых социальных сетей. Например, гем Twitter при обращении к списку друзей пытается вытянуть всех и сразу. Но если у контакта их больше, чем 3000 (15 запросов по 200 друзей), вас ожидает превышение лимита. В итоге операция завершится безрезультатно.

Совет: при работе с Твиттером используйте

https://dev.twitter.com/rest/reference/get/friends/ids

https://dev.twitter.com/rest/reference/get/users/lookup

Обращение в техподдержку

Даже у таких гигантов как Twitter или Facebook, API содержит довольно много багов. Для решения проблемы вы всегда можете обратиться в техподдержку. Как правило, у каждой социальной сети есть своя консоль для тестирования. И иногда у нее имеется функция сохранения запроса, к которому вы сможете прикрепить ссылку. Например, в Фейсбуке ответ возвращает идентификатор запроса в хедере. Его также можно прикрепить к сообщению. При работе с другими социальными сетями, уточняйте, как вы можете помочь техподдержке воспроизвести ошибку наиболее эффективно.

Совет: к сожалению, на общение с техподдержкой серьезно влияет человеческий фактор. Мы не раз сталкивались с тем, что проблема решалась только когда тикет создавался повторно и попадал к другому сотруднику.

Организация кода

Вот и добрались до самого главного. Так как нам надо было вытягивать данные, мы назвали модуль работы с социальными сетями “grabbers”. Перед вами пример базового граббера:

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

Дальше каждый граббер для социальной сети выглядит примерно так:

У нас есть главный метод grab_endpoit, который делает конкретный запрос и передает управление в метод с одноименным названием. Перед этим происходит нормализация параметров. Таким образом, мы можем передавать параметры для всех социальных сетей извне и в одинаковом формате. Далее вызывается метод гема социальной сети, и результат приводится к единому формату. Как видите, фактически все ключевые особенности работы с Facebook находятся в одном месте и, как правило, в одном классе. К сожалению, новая версия API Facebook все же не работает, как заявлено. Поэтому для получения изображений большого размера приходится использовать такой костыль:

Выводы

  1. В организации API социальных сетей используются одни и те же принципы. Поэтому работа с каждой из них имеет массу общих и минимум различных моментов.
  2. При работе с API социальных сетей главной задачей является написание системы классов, принимающих стандартизированные параметры и возвращение результатов в едином формате.
  3. Ключевые особенности работы с каждой конкретной социальной сетью должны быть собраны в одном месте.
  4. Не забывайте логировать все запросы к социальным сетям. Небольшое изменение API может сломать ваше приложение.
  5. Следите за официальными блогами для разработчиков каждой социальной сети. Как правило, в них объявляют о значительных изменениях и дают советы по миграции на новые версии.

Мы Крым Диджитал

С 2015 года мы предоставляем полный цикл услуг мобильной и веб-разработки клиентам из различных отраслей и разных стран.

Подпишись
на наши новости

Контакты пресс-службы

+ 7 (926) 118-80-32

WhatsApp, Viber, Telegram

Давайте обсудим Ваш проект

или свяжитесь с нами по почте projects@crimeadigital.ru

Нажимая кнопку «Отправить», вы даете согласие на обработку персональных данных

Заполните форму или свяжитесь
удобным для Вас способом

Контакты

г. Севастополь, ул. Руднева, д.41, 4 этаж технопарк ИТ-Крым +7 978 679-76-353 agro@crimeadigital.ru

Социальные сети

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Крым Диджитал приняла участие в стратегической сессии

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня. Вместе с Правительством Севастополя, Институтом информационных технологий и управления в технических системах СевГУ и приглашенными ИТ-компаниями города обсудили перспективу развития системы высшего образования в Севастополе.Представители бизнеса, власти и образовательной системы выступали со своим видением будущих потребностей региона в кадрах, поднимали насущные вопросы обучения студентов, прохождения практики и дальнейшего трудоустройства. Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня.

Вместе с Правительством Севастополя, Институтом информационных технологий и управления в технических системах СевГУ и приглашенными ИТ-компаниями города обсудили перспективу развития системы высшего образования в Севастополе.
Представители бизнеса, власти и образовательной системы выступали со своим видением будущих потребностей региона в кадрах, поднимали насущные вопросы обучения студентов, прохождения практики и дальнейшего трудоустройства.

Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Выпуск курса Software Testing

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing! Всего курс успешно завершили 13 человек. В течение 2 месяцев несмотря на теплую погоду и манящее море ребята ответственно посещали занятия 2 раза в неделю, делали домашние задания и проверочные работы. Трое начинающих специалистов теперь стажеры нашей компании. Следующий курс намечен на август. Не пропусти анонс записи!

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing!

Всего курс успешно завершили 13 человек. В течение 2 месяцев несмотря на теплую погоду и манящее море ребята ответственно посещали занятия 2 раза в неделю, делали домашние задания и проверочные работы. Трое начинающих специалистов теперь стажеры нашей компании.

Следующий курс намечен на август. Не пропусти анонс записи!

Лицензия на образовательную деятельность

В 2022 году мы получили лицензию на образовательную деятельность по программам дополнительного профессионального образования! Теперь мы можем обучать специалистов по направлениям Ruby on Rails, ReactJS и Software Testing и выдавать удостоверения о повышении квалификации государственного образца.
В 2022 году мы получили лицензию на образовательную деятельность по программам дополнительного профессионального образования! Теперь мы можем обучать специалистов по направлениям Ruby on Rails, ReactJS и Software Testing и выдавать удостоверения о повышении квалификации государственного образца.

Мы вошли в Реестр эффективно и социально значимых предприятий.

По результатам ежегодной финансово-экономической аналитики Межотраслевой рейтинговой компании Крым Диджитал включена в Реестр эффективных и социально значимых предприятий. По итогу аналитики, в рамках отрасли (ОКВЭД 62.01) и региона Крым, CDG вошло в 4% лучших компаний страны, с результатом – 92 балла!
По результатам ежегодной финансово-экономической аналитики Межотраслевой рейтинговой компании Крым Диджитал включена в Реестр эффективных и социально значимых предприятий. По итогу аналитики, в рамках отрасли (ОКВЭД 62.01) и региона Крым, CDG вошло в 4% лучших компаний страны, с результатом – 92 балла!