Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Twitter
Code

Работа с API Twitter: создание друзей для подписки

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Building With the Twitter API.
Building With the Twitter API: Repeating Tweets From a Group
Building With the Twitter API: Analyzing Your Followers

Russian (Pусский) translation by Sergey Zhuk (you can also view the original English article)

Final product image
What You'll Be Creating

Добро пожаловать! Я знаю, что прошло некоторое время с тех пор, как я добавил нашу серию API Twitter. Я был немного занят. Сначала была опухоль головного мозга, затем роботизированная радиохирургия, затем продолжающаяся серия программирования на Yii и, наконец, запуск Meeting Planner.

Я решил написать сегодняшнее руководство по работе с Twitter API для создания друзей (то, что Twitter называет людей, на которых вы подписаны).

Зачем? Ну, странные президентские выборы в США в 2016 году выявили некоторые из злоупотреблений и преследований, которые каждый день происходят в Твиттере. Оказалось, что компания мало сделала для фильтрации, и, как программисты, мы знаем, что это не так сложно. Она наверно просто боялась потерять свою аудиторию от ненавистных прискорбных поступлений, которые влекут за собой значительную долю доходов от рекламы.

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

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

И вы можете посмотреть демографические оценки Твиттер-рекламы на своих страницах аналитики. Как вы можете видеть ниже, Твиттер оценивает, что 69 процентов моих последователей - мужчины.

Building with Twitter API - Twitter Analytics Gender Estimate

Скорее всего то, что голоса женщин гораздо труднее найти в Twitter. Но они там есть. Pew сообщает, что 21% женщин-пользователей Интернета используют Twitter, а 25% интернет-пользователей - мужчин.

Building with Twitter API Twitter Demographics via Pew Research

Поэтому сегодня я продемонстрирую вам использование фреймворка Yii2 для PHP, чтобы получить доступ к API Twitter и автоматизировать добавление друзей в учетные записи пользователей Twitter. (Если вы хотите узнать больше о Yii2, ознакомьтесь с нашей параллельной серией Программирование на Yii2.)

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

Если у вас есть какие-либо вопросы или замечания, отправьте их ниже в комментариях или обратитесь ко мне на Twitter @reifman.

Оглядываясь назад: Учебники по API Twitter

Хотя в прошлом я написал несколько учебников по API Twitter, все они были основаны на коде Yii 1.x. Yii2 давно отсутствует, и хотя я писал об аутентификации OAuth, я не писал об аспектах API для вашей собственной учетной записи и / или от имени аутентифицированных учетных записей для обновленной инфраструктуры. И это было нелегко - для Twitter пока еще нет хороших плагинов Yii2.

Вот некоторые из моих прошлых обучающих программ:

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

Использование PHP-библиотеки TwitterOAuth

К сожалению, я не смог найти надежное рабочее расширение Twitter API для Yii2, поэтому я использовал обобщенную библиотеку PHP OAuth PHP, чтобы создать свою собственную модель Twitter.

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

Building with the Twitter API Step from TwitterOAuth Walkthrough

Цели обслуживания продуктов

Сервис Twixxr будет аутентифицировать посетителей сайта, а затем автоматически добавлять новых друзей в свои учетные записи. Друзья будут выбраны из более чем 600 влиятельных женщин, которых я нашел в Twitter:

Building Twitter API Twixxr Service Home Page

Давайте начнем с кода.

Аутентификация пользователя

Мой TwitterController.php имеет два основных метода: Request и Return. Вот метод Request:

Модель Twitter.php вызывается в new Twitter(); Получает уникальный getAuthorizeURL() для перенаправления посетителя сайта на страницу аутентификации Twitter, например. https://api.twitter.com/oauth/authorize?oauth_token=q-7ChxxxxxxxxnpXAAABzzzzzzz6E:

Building with Twitter API OAuth Authorize Redirect

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

Модель Twitter использует ваш consumer key приложения и consumer secret, который вы получаете при регистрации в сервисе:

Метод Return, показанный выше, затем регистрирует пользователя и сохраняет свои долгосрочные ключи доступа к учетной записи - это позволяет вам неограниченно делать вызовы API от их имени:

Для получения доступа на чтения и запись к их учетным записям я расширяю таблицу Auth от простого доступа к аутентификации, которая описана в нашей серии «Упрощение Onramp с помощью OAuth», чтобы включить эти дополнительные ключи проверки.

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

Импорт имен, биографии профиля и фотографий

Затем я создал модель Twixxr.php, которая предоставляет множество важных функций, специфичных для сервиса. Во-первых, я создал Twixxr::loadProfiles() для синхронизации имен, биографий и счетчиков, связанных с Twitter, например. Фотографии профиля, статусные сообщения, подписчики для каждой женщины, указанной в моей статической базе данных.

Это вызывается консольным заданием из cron, которое я опишу позже в серии про Yii2. Таким образом, эти профили синхронизируются постепенно и многократно с определенными интервалами в течение нескольких дней.

Создание дружбы

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

Во-первых, я хотел бы убедиться, что Samuel (и каждый пользователь Twixxr) следует за учетной записью Twixxr_com.

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

Затем вот метод Twitter::createFriend($screen_name)

Затем он делает это для всех женщин, запрошенных Самуилом, как указано в таблице Log, и, конечно же много чего еще происходит:

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

Вот метод Twitter::getFriendshipsShow(), который проверяет, соответствует ли эта учетная запись желаемой учетной записи. В приведенном выше коде он пропускает запросы, которые являются избыточными, чтобы не превышать ограничение API.

В ближайшем будущем я буду реализовывать массовый API Twitter для этого, делая только один вызов вместо сотен на пользователя, используя get/friendships/lookup. Обратите внимание: для доступа к этой странице вам потребуется аккаунт разработчика.

Удаление дружеской связи

Вы также можете отменить эту дружбу через API:

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

Производительность

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

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

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

Вот метод followAll в TwixxrController.php:

Ниже приведены методы Twixxr::followAll и followCount, которые также используются пронумерованными кнопками выше для подписки на 100, 200, 300 женщин и т.д.

Они просто создают записи в журнале для каждого запроса дружбы, чтобы задание cron обрабатывалось в фоновом режиме.

Что дальше?

Надеюсь, вам понравилось узнавать новое об использовании TwitterOAuth.php в Yii2 и о том, как авторизировать и использовать Twitter API от имени своих пользователей сайта.

Затем я бы хотел использовать API Twitter для анализа моих собственных подписчиков. У меня есть подозрение, что подавляющее большинство последователей Twitter являются спамовыми ботами, и я хотел бы использовать API, чтобы доказать это. Оставайтесь на связи.

Если у вас есть вопросы или предложения, отправьте их в комментариях. Если вы хотите продолжить читать мои будущие уроки Envato Tuts + и другие серии, пожалуйста, посетите мою страницу инструктора или следуйте за мной в Twitter @reifman. Определенно проверьте мою серию про стартап и Планировщика Встреч.

Ссылки по теме

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.