API социальных сетей: интернет-портал в реальный мир

Опубликовано: 2022-03-11

API социальных сетей прошли долгий путь с тех пор, как Google выпустила первую версию своего API YouTube в мае 2008 года, а Facebook выпустила первую версию API Graph в апреле 2010 года. Сегодня эти API дают вам возможность запрашивать публикации у платформ социальных сетей. , пользователи, каналы и демографические данные. Они даже позволяют вам создать свой собственный сервис или узнать больше о своей пользовательской базе.

В этой статье мы рассмотрим способы использования некоторых популярных API социальных сетей:

  • Facebook (графический и маркетинговый API)
  • Инстаграм
  • Твиттер
  • YouTube
  • Пинтерест

Мы также обсудим их ограничения и рассмотрим некоторые полезные инструменты, доступные для использования с этими API. Позже в статье мы также рассмотрим, как интегрировать эти API в любое приложение Rails.

API социальных сетей: интернет-портал в реальный мир

Используйте API социальных сетей, чтобы узнать своих пользователей лучше, чем они сами себя знают.
Твитнуть

Я сосредоточусь на API одной социальной сети и объясню ее возможности, ограничения и доступные инструменты. Далее в этой статье будет таблица с различными API и их свойствами для лучшего сравнения.

Чтобы использовать API, вам сначала нужно настроить приложение, которое создает запросы от имени вашего приложения с запросами на основе OAuth. Пользователи будут аутентифицироваться в вашем приложении, и вы сможете получить доступ к их данным с помощью полученного токена доступа пользователя.

Фейсбук

Ныне устаревший FQL (Facebook Query Language) раньше был SQL-подобным языком запросов, который можно было использовать для доступа ко всем данным из Facebook.

Facebook выпустил первую версию своего Graph API в апреле 2010 года. Самая последняя версия на момент написания этой статьи — 2.6, которая была представлена ​​12 апреля 2016 года. Это низкоуровневый API на основе HTTP, который можно использовать для запросов. данные, создавать сообщения и даже создавать автоматические рекламные кампании.

Инструменты

Graph API Explorer — наиболее часто используемый инструмент при работе с Facebook API. Он позволяет выполнять запросы Graph API в браузере и анализировать результаты: вы можете использовать один из маркеров доступа вашего приложения или создать его на лету с выбранными областями.

Возможности

Graph API — это API на основе REST, который позволяет создавать, обновлять и удалять объекты для каждого HTTP-запроса на определенных узлах.

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

Чтобы выполнять запросы к Graph API, вам нужен токен доступа, который будет получен, как только пользователь успешно авторизуется в вашем приложении. Маркер доступа должен храниться вашим приложением.

Сферы

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

Некоторые области, такие как publish_actions или ads_management , требуют проверки со стороны Facebook до выпуска приложения.

Примеры

Чтобы продемонстрировать, как работает Graph API, я покажу вам, как читать, создавать, обновлять и удалять сообщения с помощью API.

Чтобы получить свои собственные сообщения, вы можете выполнить запрос GET /me/posts . Результатом будет строка JSON со списком сообщений, включая их сообщение, created_time и идентификатор. Вы можете использовать параметр pretty или средство форматирования JSON, чтобы ответ выглядел менее загроможденным.

Чтобы получить больше данных о ваших сообщениях, вы можете расширить запрос с помощью полей в качестве параметров запроса. Например, запрос me/posts?fields=reactions, picture даст вам изображение поста и реакции.

Чтобы создать публикацию, вы можете просто отправить действие POST на пограничную ленту, например, me/feed , с такими параметрами, как message: hello world . Graph API вернет объект JSON с идентификатором созданного вами сообщения. Затем вы можете просмотреть сообщение по адресу http://facebook.com/[post_id] .

Чтобы обновить сообщение, вы можете отправить POST-запрос на узел сообщения с полями, которые будут обновлены в качестве параметров; например, /[post_id] и такие параметры, как Message: lorem ipsum . Будет возвращен индикатор успеха со значением true или false.

Чтобы удалить сообщение, вы можете просто сделать запрос DELETE к узлу с идентификатором сообщения (например, /[post_id] ). Возвращаемое значение будет объектом JSON со значением успеха true или false.

Полный обзор всех узлов и действий доступен в справочнике по API Graph.

Маркетинговый API

Маркетинговый API заслуживает особого упоминания, потому что это мощный инструмент для управления рекламой в Facebook и получения информации о рекламе через ваше приложение.

Он работает так же, как и другие методы Graph API. Однако вам нужна область ads_management , чтобы получить доступ к объявлениям пользователя. Facebook также должен проверить ваше приложение, прежде чем вы сможете его опубликовать.

Тестирование

После создания приложения оно находится в режиме разработки и автоматически отображается на панели инструментов вашего приложения (например, https://developers.facebook.com/apps/ ).

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

Обзор процесса

При добавлении определенных разрешений Facebook необходимо проверить ваше приложение, прежде чем вы сможете его опубликовать. Процесс рецензирования определяется этим набором руководящих принципов.

Чтобы отправить определенные элементы на проверку, вы можете просто добавить их в раздел «Обзор приложений» на панели инструментов вашего приложения. Затем Facebook проведет вас через процесс проверки, и вы получите уведомление, как только ваше приложение будет одобрено.

Ограничения и обходные пути

Ограничения скорости

Приложение может совершать 200 звонков в час на пользователя в совокупности. Если вы достигнете этого предела, ваши вызовы API приведут к ошибке.

Поиск сообщений на Facebook

Facebook ограничивает поиск сообщений и тегов на Facebook через Graph API и FQL. Однако вы можете использовать API поиска Google для поиска общедоступных сообщений Facebook, а затем использовать идентификатор сообщения в URL-адресе для получения дополнительной информации о конкретных сообщениях через API Graph.

Получение пользовательских данных об аудитории

Статистика аудитории на Facebook — это мощный исследовательский инструмент, позволяющий узнать больше о конкретной аудитории на основе интересов, демографических данных или других атрибутов (например, набора адресов электронной почты).

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

Инстаграм

Иллюстрация API Instagram

API Instagram был впервые выпущен в апреле 2014 года и позволяет создавать приложения, которые анализируют сообщения пользователей и помогают пользователям управлять своими сообщениями.

Инструменты

Поскольку консоль API от Instagram устарела на момент написания этой статьи, я рекомендую использовать Apigee для целей тестирования в вашем браузере.

Возможности

API Instagram — это API на основе REST. Все его конечные точки описаны в их официальной документации.

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

Чтобы выполнять запросы к Instagram API, вам нужен токен доступа, который будет получен, как только пользователь авторизуется в вашем приложении. Чтобы пользователь мог получить токен доступа, он или она должны быть перенаправлены на URL-адрес авторизации вашего приложения. Затем сервер перенаправит пользователя после авторизации вашего приложения, и вы сможете прочитать токен.

Сферы

Ваше приложение может запрашивать различные разрешения. Например, «базовый» ограничивает вас чтением информации профиля пользователя и мультимедиа. «public_content» позволяет вам читать любой общедоступный профиль и медиа от имени пользователя.

Примеры

Чтобы продемонстрировать, как работает Instagram API, я рассмотрю несколько примеров на основе конечной точки мультимедиа https://api.instagram.com/v1/media/popular .

Эта конечная точка возвращает популярные в настоящее время медиафайлы из Instagram, если в качестве параметра передается токен доступа. Результатом будет массив сообщений в формате JSON, содержащий для каждого его идентификатор носителя, ссылку на его изображение, лайки, комментарии, пользователя, опубликовавшего его, и некоторые другие атрибуты.

Вы можете использовать apigee, чтобы поиграть и узнать больше о конечных точках API и их параметрах.

Тестирование

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

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

Обзор процесса

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

Чтобы выйти в эфир и получить доступ ко всему контенту Instagram, вам необходимо отправить заявку на рассмотрение. После проверки вы сможете запрашивать области только для пользователей, для которых ваше приложение было одобрено.

Ограничения и обходные пути

Демографический анализ

На момент написания этой статьи не было возможности получить информацию о возрасте, поле или интересах общедоступных пользователей, потому что Instagram не предоставляет вам эту информацию.

Чтобы получить демографические данные о подписчиках или список пользователей Instagram, вам нужно перебрать их всех и попытаться определить их возраст, пол или интересы на основе их подписчиков или информации, представленной в их биографии.

Хорошее решение этой проблемы с большими данными может быть ценным сервисом для некоторых компаний.

Ограничения скорости

Все ограничения скорости на платформе Instagram контролируются токеном доступа в скользящем 1-часовом окне. Живые приложения имеют более высокие ограничения скорости, чем приложения в режиме песочницы. В настоящее время глобальное ограничение скорости для живого приложения составляет 5000 вызовов в час.

Твиттер

Twitter API был впервые выпущен в сентябре 2006 года. Это общедоступный REST API, который обеспечивает доступ для чтения и записи к данным Twitter. Аутентификация выполняется с помощью OAuth. Ответы в формате JSON.

Инструменты

У Twitter есть консольный инструмент API на базе Apigee, который можно использовать для тестирования запросов в браузере.

Возможности

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

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

Twitter позволяет создавать приложения, в которых пользователи могут аутентифицироваться в обмен на токен доступа. Модель аутентификации — OAuth.

Сферы

На странице настроек приложения необходимо установить только два разрешения: «Только чтение» и «Чтение и запись». Последний позволяет создавать твиты и выполнять другие действия с публикацией от имени пользователя.

Примеры

Чтобы продемонстрировать использование Twitter API, я извлеку твиты авторизованного пользователя. Результатом является массив JSON с изображениями твитов, избранным, ретвитами, URL-адресами, датой создания и другими атрибутами. Используйте Apigee, чтобы поиграть и узнать больше о конечных точках API и их параметрах.

Процесс тестирования и проверки

В настоящее время для Twitter API не доступен процесс проверки или тестовый режим.

Ограничения и обходные пути

Демографический анализ

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

Затем вы можете сделать дополнительные предположения на основе собранных данных о подписчиках с помощью анализа данных. Еще один способ получить больше информации — воспользоваться платной корпоративной платформой API Twitter GNIP. Помимо прочего, он позволяет создавать аудитории и получать информацию о них через API. В настоящее время API находится в стадии БЕТА.

Ограничения скорости

Twitter имеет ограничения скорости для каждого пользователя и на 15-минутной основе. Если в вашем приложении есть несколько токенов, вы можете просто чередовать токены для публичных операций, чтобы избежать превышения лимита.

YouTube

Иллюстрация API YouTube

API данных YouTube впервые был представлен в январе 2013 года. Он позволяет добавлять функции YouTube в ваше приложение, выполнять поиск контента и анализировать демографические данные канала YouTube. Это REST API на основе токенов OAuth, который возвращает ответы JSON.

Инструменты

API Explorer позволяет тестировать несанкционированные и авторизованные запросы. Вы можете выполнять запросы из своего браузера к предоставленным конечным точкам.

Возможности

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

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

API данных YouTube поддерживает протокол OAuth 2.0 для авторизации доступа к личным данным пользователей. Как только пользователь будет авторизован в вашем приложении, он будет перенаправлен в ваше приложение, где должен быть сохранен токен доступа.

Чтобы использовать авторизацию OAuth 2.0, сначала необходимо получить учетные данные для авторизации в консоли разработчика Google.

Сферы

API данных YouTube в настоящее время поддерживает следующие области:

  • Принудительно использовать SSL. Управляйте своей учетной записью YouTube, но только через соединение SSL.
  • По умолчанию — управление учетной записью YouTube. Эта область функционально идентична области youtube.force-ssl, но не требует подключения SSL.
  • Только для чтения — просмотр вашей учетной записи YouTube.
  • Загрузить — загрузите видео на YouTube и управляйте своими видео на YouTube.
  • Аудит партнерских каналов. Получение информации, которую многоканальные сети используют в качестве критериев для принятия или отклонения канала в своей сети.

Примеры

В качестве примера использования API данных Youtube можно привести следующие запросы для видео со словом «кодирование» в названии и описании:

 https://www.googleapis.com/youtube/v3/search?part=snippet&q=coding&key={YOUR_API_KEY}

Результатом является объект JSON, содержащий заголовок, описание, идентификатор видео и идентификатор канала. Вы можете использовать последний, чтобы узнать больше о канале.

Параметр part требуется для любого запроса API, который возвращает определенный ресурс. Параметр определяет свойства ресурса, которые должны быть включены в ответ API. Например, видеоресурс имеет следующие части: сниппет, contentDetails, fileDetails, player, processingDetails, recordDetails, статистика, статус, предложения, TopicDetails.

Все остальные параметры, кроме ключа API, отличаются от звонка к звонку. Подробнее об этом читайте в справочнике по API.

Пинтерест

API Pinterest был первоначально выпущен в апреле 2015 года. Это API RESTful, который обеспечивает доступ к данным пользователя Pinterest, таким как его доски, контакты, подписчики и многое другое. API Pinterest использует OAuth и разрешает как чтение, так и запись при взаимодействии с контентом пользователя.

Инструменты

Как и другие, Pinterest предоставляет обозреватель API для проверки своих конечных точек и выполнения запросов к ним. Здесь вы можете ознакомиться со всеми их инструментами.

Возможности

REST API Pinterest позволяет создавать пины, доски и запрашивать данные Pinterest с помощью OAuth.

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

Pinterest использует OAuth 2.0 для аутентификации запросов между вашим приложением и вашими пользователями. Все запросы должны быть сделаны через HTTPS.

Сферы

Области определяют, что приложение может делать от имени пользователя. Pinterest использует следующие области:

  • none (должен быть известен идентификатор): используйте метод GET для профиля пользователя, сведений о доске и пинах, а также пинов на доске.
  • read_public : использовать метод GET для пользовательских пинов, досок и лайков.
  • write_public : используйте методы PATCH, POST и DELETE для пользовательских пинов и досок.
  • read_relationships : использовать метод GET для подписчиков и подписчиков пользователя (на досках, пользователях и интересах).
  • write_relationships : используйте методы PATCH, POST и DELETE для подписчиков и подписчиков пользователя (на досках, пользователях и интересах).

Примеры

Чтобы продемонстрировать использование API Pinterest, я покажу, как читать последние контакты пользователя:

https://api.pinterest.com/v1/me/pins/?access_token={your_token}&fields=id,link,note,url,counts,board,created_at вернет пользовательские контакты с их идентификатором, ссылкой, заметкой, URL, лайки и репины.

Процесс тестирования и проверки

Приложения изначально находятся в режиме разработки и должны быть отправлены на рассмотрение, прежде чем они будут выпущены в рабочем режиме.

Ограничения и обходные пути

Демографический анализ

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

Поиск пинов

В настоящее время нет возможности искать контакты с определенными тегами или ключевыми словами через API. Вы можете обойти это ограничение, используя Google Custom Search API для поиска результатов только на булавках Pinterest и получения идентификатора булавки через URL-адрес. Затем идентификатор можно использовать для получения информации о пин-коде через API.

Ограничения скорости

Каждому приложению (с уникальным идентификатором приложения) разрешено 1000 вызовов на конечную точку в час для каждого уникального токена пользователя.

Каждый ответ API возвращает заголовок, который дает вам обновленную информацию об ограничениях скорости. X-Ratelimit-Limit — это ограничение скорости для этого конкретного запроса, а X-Ratelimit-Remaining — это количество запросов, которые вы оставили в 60-минутном окне.

Если вы превысите лимит скорости для данной конечной точки, вы получите код ошибки 429 «Слишком много запросов».

Сравнение API социальных сетей

Версия OAuth Формат Демография
Фейсбук v2.6
Первоначальный выпуск: апрель 2010 г.
ОАут 2 Запросы REST с ответами JSON Поддерживается
Инстаграм v1
Первоначальный выпуск: апрель 2014 г.
ОАут 2 Запросы REST с ответами JSON Не поддерживается
Твиттер v1.1
Первоначальный выпуск: сентябрь 2006 г.
ОАут 1 Запросы REST с ответами JSON Поддерживается только с GNIP
YouTube v3
Первоначальный выпуск: январь 2013 г.
ОАут 2 Запросы REST с ответами JSON Поддерживается
Пинтерест v1
Первоначальный выпуск: апрель 2015 г.
ОАут 2 Запросы REST с ответами JSON Не поддерживается

Демонстрационное приложение с Devise

Интеграция этих API в ваши новые или существующие приложения благодаря множеству пакетов и библиотек API социальных сетей стала проще, чем когда-либо. Большинство современных платформ и фреймворков имеют проверенные временем сторонние библиотеки, которые даже объединяют аспекты аутентификации всех этих API в единую библиотеку с аккуратной архитектурой плагинов.

Иллюстрация API социальной сети

В этой статье мы рассмотрим, как Devise, драгоценный камень Ruby, очень элегантно делает это для приложений Rails. Devise — это гибкая библиотека аутентификации, основанная на Warden, которая реализует аутентификацию, регистрацию, вход в систему и хранение данных для нескольких поставщиков входа в систему. Если вы больше разбираетесь в интерфейсе и хотите проверить что-то подобное для AngularJS, взгляните на эту статью.

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

 gem 'omniauth-facebook' gem 'omniauth-pinterest' gem 'omniauth-twitter' gem 'omniauth-google-oauth2' gem 'omniauth-instagram'
Одна из лучших особенностей Rails заключается в том, что существует множество плагинов, написанных сообществом с открытым исходным кодом. Они распространяются как драгоценные камни. Эти драгоценные камни, перечисленные в центральном файле конфигурации, управляются Bundler.

Поскольку они обеспечивают только аутентификацию, регистрацию, вход и хранилище для каждого из этих провайдеров, нам также потребуется получить следующие драгоценные камни для реальных клиентов API:

 gem 'twitter' # https://github.com/sferik/twitter gem 'instagram' # https://github.com/facebookarchive/instagram-ruby-gem gem 'koala' # (Facebook API) https://github.com/arsduo/koala gem 'google-api-client' # (YouTube API), https://github.com/google/google-api-ruby-client gem 'pinterest-api' # https://github.com/realadeel/pinterest-api

Омниаут и аутентификация

Чтобы пользователь мог авторизовать ваше приложение у вашего провайдера, вы можете просто предоставить ссылку со следующим путем:

 omniauth_authorize_path('user', :facebook) omniauth_authorize_path('user', :instagram) ...

Чтобы отреагировать на обратный вызов после аутентификации пользователя, вы можете определить OmniauthCallbacksController с такими функциями, как:

 class AuthenticationsController < Devise::OmniauthCallbacksController def facebook if request.env["omniauth.auth"] ... end end end

Это место для добавления новой модели аутентификации с токеном и данными в ваше приложение:

 authentication = where(provider: omniauth.provider, user_id: user.id) .first_or_create do |auth| auth.user = user auth.uid = omniauth.uid auth.secret = omniauth.credentials.secret auth.token = omniauth.credentials.token ... end

Выполнение вызовов API

Вот пример того, как использовать Koala для запроса API Facebook. Остальные провайдеры работают примерно так же и описаны в README гема.

Вот как вы получаете свои пользовательские данные с помощью Koala:

 authentication = user.authentication_for_provider(:facebook) token = authentication.token api = Koala::Facebook::API.new(token) results = api.get_object("me")

Затем вы можете использовать результат JSON, возвращенный API. Исходный код этого демонстрационного приложения доступен на GitHub.

Заворачивать

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

Rails и доступные драгоценные камни позволяют легко интегрировать эти API в ваше приложение rails и запрашивать интерфейсы с помощью уровня абстракции между вашим приложением и API.