Twitter API для Laravel 10.x, 11.x (и новых версий по мере их выпуска). Также поддерживает другие фреймворки через PHP-DI (или вы можете добавить поддержку своего фреймворка через PR).
Вам необходимо создать приложение и создать токен доступа в разделе «Управление приложениями».
composer require atymic/twitter:^3.0 -W
Просто установите указанные ниже переменные среды в вашем .env .
TWITTER_CONSUMER_KEY=
TWITTER_CONSUMER_SECRET=
TWITTER_ACCESS_TOKEN=
TWITTER_ACCESS_TOKEN_SECRET=
TWITTER_API_VERSION=
Запустите php artisan vendor:publish --provider="AtymicTwitterServiceProviderLaravelServiceProvider"
/config/twitter.php
3.x является текущей основной версией и не имеет обратной совместимости с 2.x.
См. руководство по миграции в UPGRADE.md.
2.x больше не поддерживается. Мы не принимаем исправления ошибок, пожалуйста, обновите версию до 3.x.
Вы можете выбирать между тремя различными форматами вывода. По умолчанию ответы API версии 1 будут возвращаться в виде объектов, а ответы API версии 2 — в формате JSON. Чтобы изменить это, используйте опцию response_format в параметрах, которые вы передаете любому методу.
response_format : object|json|array (v1 default:object) (v2 default:json)
Чтобы установить версию API Twitter по умолчанию v2 вместо версии по умолчанию v1.1 , установите для TWITTER_API_VERSION значение 2 в вашем .env .
Если вы установили API v1.1 по умолчанию, вы можете использовать Twitter::forApiV2() для получения экземпляра клиента v2. То же самое касается получения экземпляра v1 от клиента v2 с помощью Twitter::forApiV1() .
Безопасно вызывать Twitter::forApiV1() на экземпляре клиента v1 или v2 .
getSettings() — возвращает настройки (включая текущий тренд, информацию о местоположении и времени сна) для аутентифицирующего пользователя.getCredentials()postSettings() — обновляет настройки аутентифицирующего пользователя.postSettingsDevice() — определяет, на какое устройство Twitter будет доставлять обновления для аутентифицирующего пользователя. Отправка none в качестве параметра устройства отключит обновления SMS.postProfile() — устанавливает некоторые значения, которые пользователи могут установить на вкладке «Учетная запись» на своей странице настроек. Будут обновлены только указанные параметры.postBackground() — обновляет фоновое изображение профиля аутентифицирующего пользователя. Этот метод также можно использовать для включения или отключения фонового изображения профиля.postProfileImage() — обновляет изображение профиля аутентифицирующего пользователя. Обратите внимание, что этот метод ожидает необработанные составные данные, а не URL-адрес изображения.destroyUserBanner() — удаляет загруженный баннер профиля для аутентифицирующего пользователя. Возвращает HTTP 200 в случае успеха.postUserBanner() — загружает баннер профиля от имени аутентифицирующего пользователя. Для достижения наилучших результатов загрузите узел Profile_banner_url в объекты Users. setWebhook($env, $url) — регистрирует URL-адрес веб-перехватчика для всех типов событий в данной среде.crcHash($crcToken) — возвращает хэш HMAC SHA-256 из заданного токена CRC и секрета потребителя. Вам нужно будет вернуть это на свой вебхук (подробнее).getWebhooks($env) — возвращает URL-адреса веб-перехватчиков для данной среды (или всех сред, если они не указаны), а также их статусы для приложения, выполняющего проверку подлинности.updateWebhooks($env, $webhookId) — запускает проверку ответа на вызов (CRC) для заданного веб-перехватчика среды для всех действий. Если проверка успешна, возвращает true и повторно включает веб-перехватчик, устанавливая его действительный статус.destroyWebhook($env, $webhookId) — удаляет вебхук из конфигурации всех действий предоставленного приложения. Возвращает true в случае успеха.setSubscriptions($env) — подписывает предоставленное приложение на все события предоставленной среды для всех типов сообщений. Возвращает true в случае успеха.getSubscriptions($env) — возвращает true, если предоставленный контекст пользователя имеет активную подписку на предоставленное приложение.getSubscriptionsCount() — возвращает количество активных подписок в вашей учетной записи для всех действий.getSubscriptionsList($env) — возвращает список текущих подписок типа «Все действия».destroyUserSubscriptions($env, $userId) — деактивирует подписку для указанного идентификатора пользователя из среды. Возвращает true в случае успеха. getBlocks() — возвращает коллекцию пользовательских объектов, которые блокирует аутентифицирующий пользователь.getBlocksIds() — возвращает массив числовых идентификаторов пользователей, которых блокирует аутентифицирующий пользователь.postBlock() — блокирует указанному пользователю подписку на аутентифицирующего пользователя. Кроме того, заблокированный пользователь не будет отображаться в упоминаниях аутентифицирующих пользователей или на временной шкале (если только его не ретвитнет другой пользователь). Если существуют отношения подписки или дружбы, они уничтожаются.destroyBlock() — разблокирует пользователя, указанного в параметре ID для аутентифицирующего пользователя. В случае успеха возвращает разблокированного пользователя в запрошенном формате. Если отношения существовали до установки блокировки, они не будут восстановлены. getDm() — возвращает одно событие прямого сообщения, указанное параметром id.getDms() — возвращает все события личных сообщений (как отправленные, так и полученные) за последние 30 дней. Отсортировано в обратно-хронологическом порядке.destroyDm() — уничтожает прямое сообщение, указанное в обязательном параметре ID. Аутентифицирующий пользователь должен быть получателем указанного прямого сообщения.postDm() — публикует новое событие message_create, в результате которого указанному пользователю отправляется личное сообщение от аутентифицирующего пользователя. Возвращает событие в случае успеха. Поддерживает публикацию личных сообщений с дополнительным быстрым ответом и вложением мультимедиа. getFavorites() — возвращает 20 последних твитов, добавленных в избранное аутентифицирующим или указанным пользователем.destroyFavorite() — удаляет из избранного статус, указанный в параметре ID в качестве аутентифицирующего пользователя. В случае успеха возвращает статус «неизбранное» в запрошенном формате.postFavorite() — добавляет в избранное статус, указанный в параметре ID в качестве аутентифицирующего пользователя. Возвращает статус избранного в случае успеха. getNoRters() — возвращает коллекцию user_ids, от которых текущий аутентифицированный пользователь не хочет получать ретвиты.getFriendsIds() — возвращает курсоризованную коллекцию идентификаторов пользователей для каждого пользователя, следующего за указанным пользователем.getFollowersIds() — возвращает курсорированную коллекцию идентификаторов пользователей для каждого пользователя, следующего за указанным пользователем.getFriendshipsIn() — возвращает коллекцию числовых идентификаторов для каждого пользователя, у которого есть ожидающий запрос на подписку на аутентифицируемого пользователя.getFriendshipsOut() — возвращает набор числовых идентификаторов для каждого защищенного пользователя, для которого аутентифицирующий пользователь имеет ожидающий запрос на подписку.postFollow() — позволяет аутентифицирующим пользователям следовать за пользователем, указанным в параметре ID.postUnfollow() — позволяет аутентифицирующему пользователю отписаться от пользователя, указанного в параметре ID.postFollowUpdate() — позволяет включать или отключать ретвиты и уведомления устройства от указанного пользователя.getFriendships() — возвращает подробную информацию об отношениях между двумя произвольными пользователями.getFriends() — возвращает курсорную коллекцию пользовательских объектов для каждого пользователя, за которым следит указанный пользователь (также известного как «друзья»).getFollowers() — возвращает курсорную коллекцию пользовательских объектов для пользователей, следующих за указанным пользователем.getFriendshipsLookup() — возвращает отношения аутентифицирующего пользователя в список, разделенный запятыми, содержащий до 100 предоставленных screen_names или user_ids. Значения для соединений могут быть следующими: Follow, Follow_requested, Follow_by, none, Blocking, Muting. getGeo() — Возвращает всю информацию об известном месте.getGeoReverse() — учитывая широту и долготу, ищет до 20 мест, которые можно использовать в качестве Place_id при обновлении статуса.getGeoSearch() — Поиск мест, которые можно прикрепить к статусам/обновлениям. Учитывая пару широты и долготы, IP-адрес или имя, этот запрос вернет список всех допустимых мест, которые можно использовать в качестве Place_id при обновлении статуса.getGeoSimilar() — находит рядом с заданными координатами места, похожие по названию. Концептуально вы можете использовать этот метод, чтобы сначала получить список известных мест, из которых можно выбрать. Затем, если нужное место не существует, сделайте запрос POST geo/place, чтобы создать новое. Токен, содержащийся в ответе, — это токен, необходимый для создания нового места. postSpam() — Сообщить об указанном пользователе как о спам-аккаунте в Twitter. Дополнительно выполняет эквивалент блоков POST/создает от имени аутентифицированного пользователя.getHelpConfiguration() — возвращает текущую конфигурацию, используемую Twitter, включая фрагменты twitter.com, которые не являются именами пользователей, максимальное разрешение фотографий и длину URL-адресов t.co.getHelpLanguages() — возвращает список языков, поддерживаемых Twitter, вместе с кодом языка, поддерживаемого Twitter.getHelpPrivacy() — возвращает политику конфиденциальности Twitter.getHelpTos() — возвращает Условия использования Twitter. Примечание. Это не то же самое, что Политика разработчика.getAppRateLimit() — возвращает текущие ограничения скорости для методов, принадлежащих указанным семействам ресурсов. getLists() — возвращает все списки, на которые подписывается аутентифицирующий или указанный пользователь, включая свои собственные. Пользователь указывается с помощью параметров user_id или screen_name. Если пользователь не указан, используется аутентифицирующий пользователь.getListStatuses() — возвращает временную шкалу твитов, написанных участниками указанного списка. Ретвиты включены по умолчанию. Используйте параметр include_rts=false, чтобы исключить ретвиты.destroyListMember() — удаляет указанный элемент из списка. Чтобы удалить участников из списка, прошедший проверку подлинности пользователь должен быть владельцем списка.getListsMemberships() — возвращает списки, в которые был добавлен указанный пользователь. Если user_id или screen_name не указаны, возвращается членство для аутентифицирующего пользователя.getListsSubscribers() — Возвращает подписчиков указанного списка. Подписчики частного списка будут отображаться только в том случае, если прошедший проверку подлинности пользователь владеет указанным списком.postListSubscriber() — подписывает аутентифицированного пользователя в указанный список.getListSubscriber() — Возвращает подписчиков указанного списка. Подписчики частного списка будут отображаться только в том случае, если прошедший проверку подлинности пользователь владеет указанным списком.destroyListSubscriber() — отписывает аутентифицированного пользователя из указанного списка.postListCreateAll() — добавляет несколько участников в список, указывая разделенный запятыми список идентификаторов участников или имен экранов. Аутентифицированный пользователь должен владеть списком, чтобы иметь возможность добавлять в него участников. Обратите внимание, что в списках не может быть более 5000 участников, и с помощью этого метода вы можете добавить в список до 100 участников одновременно.getListMember() — проверяет, является ли указанный пользователь членом указанного списка.getListMembers() — Возвращает членов указанного списка. Члены частного списка будут отображаться только в том случае, если прошедший проверку подлинности пользователь является владельцем указанного списка.postListMember() — Добавить участника в список. Аутентифицированный пользователь должен владеть списком, чтобы иметь возможность добавлять в него участников. Обратите внимание, что в списках не может быть более 5000 участников.destroyList() — Удаляет указанный список. Аутентифицированный пользователь должен владеть списком, чтобы иметь возможность его уничтожить.postListUpdate() — обновляет указанный список. Аутентифицированный пользователь должен владеть списком, чтобы иметь возможность его обновлять.postList() — Создает новый список для аутентифицированного пользователя. Обратите внимание, что вы не можете создать более 20 списков на одну учетную запись.getList() — возвращает указанный список. Частные списки будут отображаться только в том случае, если указанный список принадлежит аутентифицированному пользователю.getListSubscriptions() — получить коллекцию списков, на которые подписан указанный пользователь, по умолчанию 20 списков на страницу. Не включает собственные списки пользователя.destroyListMembers() — удаляет несколько участников из списка, указывая список идентификаторов или имен пользователей, разделенных запятыми. Аутентифицированный пользователь должен владеть списком, чтобы иметь возможность удалять из него участников. Обратите внимание, что в списках не может быть более 500 участников, и с помощью этого метода вы можете удалить из списка до 100 участников за раз.getListOwnerships() — возвращает списки, принадлежащие указанному пользователю Twitter. Частные списки будут отображаться только в том случае, если прошедший проверку подлинности пользователь также является владельцем списков. uploadMedia() — загрузка мультимедиа (изображений) в Twitter для использования в твите или карточке, размещенной в Twitter. getSearch() — возвращает коллекцию релевантных твитов, соответствующих указанному запросу.getSavedSearches() — возвращает сохраненные поисковые запросы аутентифицированного пользователя.getSavedSearch() — Получить информацию о сохраненном поиске, представленную данным идентификатором. Пользователь, выполняющий аутентификацию, должен быть владельцем запрашиваемого сохраненного идентификатора поиска.postSavedSearch() — создать новый сохраненный поиск для аутентифицированного пользователя. Пользователь может иметь только 25 сохраненных поисков.destroySavedSearch() — уничтожает сохраненный поиск для аутентифицирующего пользователя. Пользователь, выполняющий аутентификацию, должен быть владельцем сохраненного идентификатора поиска, который будет уничтожен. getMentionsTimeline() — возвращает 20 последних упоминаний (твитов, содержащих @screen_name пользователя) для аутентифицирующего пользователя.getUserTimeline() — возвращает коллекцию последних твитов, опубликованных пользователем, указанным параметрами screen_name или user_id.getHomeTimeline() — возвращает коллекцию последних твитов и ретвитов, опубликованных аутентифицирующим пользователем и пользователями, на которых он подписан. Домашняя лента занимает центральное место в том, как большинство пользователей взаимодействуют со службой Twitter. *getRtsTimeline() — возвращает самые последние твиты, написанные пользователем, прошедшим аутентификацию, которые были ретвитнуты другими.getRts() — возвращает коллекцию из 100 последних ретвитов твита, указанного параметром id.getTweet() — возвращает один твит, указанный параметром id. Автор твита также будет указан в твите.destroyTweet() — уничтожает статус, указанный обязательным параметром ID. Аутентифицирующий пользователь должен быть автором указанного статуса. Возвращает статус уничтожения в случае успеха.postTweet() — обновляет текущий статус аутентифицирующего пользователя, также известный как твит.postRt() — ретвитит твит. Возвращает исходный твит со встроенными сведениями о ретвите.getOembed() — возвращает один твит, указанный либо веб-URL-адресом твита, либо идентификатором твита, в формате, совместимом с oEmbed. Возвращенный фрагмент HTML будет автоматически распознан как встроенный твит, когда на страницу будет включен JavaScript виджета Twitter.getRters() — возвращает коллекцию из 100 идентификаторов пользователей, принадлежащих пользователям, которые ретвитнули твит, указанный параметром id.getStatusesLookup() — возвращает полностью гидратированные объекты твитов, содержащие до 100 твитов на каждый запрос, как указано в значениях, разделенных запятыми, передаваемых в параметр id. getTrendsPlace() — возвращает 10 самых популярных тем для определенного WOEID, если для него доступна информация о тенденциях.getTrendsAvailable() — возвращает местоположения, по которым Twitter имеет информацию о популярных темах.getTrendsClosest() — возвращает местоположения, по которым Twitter имеет информацию о актуальных темах, ближайшие к указанному местоположению. getUsersLookup() — возвращает полностью гидратированные пользовательские объекты для максимум 100 пользователей на каждый запрос, как указано в значениях, разделенных запятыми, передаваемых в параметры user_id и/или screen_name.getUsers() — возвращает различную информацию о пользователе, указанном обязательным параметром user_id или screen_name. По возможности последний твит автора будет возвращен в тексте.getUsersSearch() — предоставляет простой интерфейс поиска на основе релевантности для общедоступных учетных записей пользователей в Твиттере. Попробуйте задать запрос по тематике, полному имени, названию компании, местоположению или другим критериям. Поиск с точным соответствием не поддерживается.getUserBanner() — возвращает карту доступных вариантов размера баннера профиля указанного пользователя. Если пользователь не загрузил баннер профиля, вместо него будет отправлен HTTP 404. Этот метод можно использовать вместо манипуляций со строками профиля_banner_url, возвращаемого в объектах пользователя, как описано в разделе «Изображения профиля и баннеры».muteUser() — отключает звук пользователя, указанного в параметре ID для аутентифицирующего пользователя.unmuteUser() — включает звук пользователя, указанного в параметре ID для аутентифицирующего пользователя.mutedUserIds() — возвращает массив числовых идентификаторов пользователей, которые аутентифицирующий пользователь отключил.mutedUsers() — возвращает массив пользовательских объектов, которые аутентифицирующий пользователь отключил.getSuggesteds() — доступ к пользователям в заданной категории списка рекомендуемых пользователей Twitter.getSuggestions() — Доступ к списку рекомендуемых пользователей Twitter. Это вернет список предлагаемых категорий пользователей. Категорию можно использовать в GETusers/предложения/:slug, чтобы получить пользователей из этой категории.getSuggestedsMembers() — доступ к пользователям в заданной категории списка предлагаемых пользователей Twitter и возврат их последнего статуса, если они не являются защищенными пользователями.getTweet() — возвращает различную информацию об одном твите, указанном по запрошенному идентификатору.getTweets() — возвращает различную информацию о твите, указанном запрошенным идентификатором или списком идентификаторов. searchRecent() — конечная точка недавнего поиска возвращает твиты за последние семь дней, соответствующие поисковому запросу.
searchAll() — конечная точка поиска по всему архиву возвращает полную историю общедоступных твитов, соответствующих поисковому запросу; с момента создания первого твита 26 марта 2006 г.
Примечание. Эта конечная точка доступна только тем, кто утвержден для версии продукта Academic Research.
userTweets() — возвращает твиты, составленные одним пользователем, указанным по запрошенному идентификатору пользователя. По умолчанию по каждому запросу возвращаются десять последних твитов. Используя нумерацию страниц, можно найти последние 3200 твитов.userMentions() — возвращает твиты, в которых упоминается один пользователь, указанный по запрошенному идентификатору пользователя. По умолчанию по каждому запросу возвращаются десять последних твитов. Используя нумерацию страниц, можно найти до 800 последних твитов. getStreamRules() — возвращает список правил, активных в данный момент на конечной точке потоковой передачи, либо в виде списка, либо по отдельности.postStreamRules() — добавьте или удалите правила в ваш поток.getStream() — транслирует твиты в режиме реального времени на основе определенного набора правил фильтрации. getSampledStream() — транслирует около 1% всех твитов в режиме реального времени. hideTweet() — скрывает или показывает ответ на твит. countRecent() — получение количества твитов, соответствующих запросу, за последние 7 дней.
countAll() — получение количества твитов, соответствующих запросу.
Примечание. Доступно только через версию продукта «Академические исследования».
Linkify: преобразует URL-адреса, @usernames и хэштеги в ссылки. Тип $tweet может быть объектом, массивом или текстом. Отправляя объект или массив, метод также расширяет ссылки (t.co).
Twitter:: linkify ( $ tweet );Назад: Преобразует дату в разницу (2 часа назад).
Twitter:: ago ( $ timestamp );LinkUser: генерирует ссылку на конкретного пользователя по его пользовательскому объекту (например, $tweet->user) или идентификатору/строке.
Twitter:: linkUser ( $ user );LinkTweet: генерирует ссылку на определенный твит.
Twitter:: linkTweet ( $ tweet );Возвращает коллекцию последних твитов, опубликованных пользователем, указанным параметрами screen_name или user_id.
Route:: get ( ' /userTimeline ' , function ()
{
return Twitter:: getUserTimeline ([ ' screen_name ' => ' thujohn ' , ' count ' => 20 , ' response_format ' => ' json ' ]);
});Возвращает коллекцию последних твитов и ретвитов, опубликованных аутентифицирующим пользователем и пользователями, на которых он подписан.
Route:: get ( ' /homeTimeline ' , function ()
{
return Twitter:: getHomeTimeline ([ ' count ' => 20 , ' response_format ' => ' json ' ]);
});Возвращает X последних упоминаний (твитов, содержащих @screen_name пользователя) для аутентифицирующего пользователя.
Route:: get ( ' /mentionsTimeline ' , function ()
{
return Twitter:: getMentionsTimeline ([ ' count ' => 20 , ' response_format ' => ' json ' ]);
});Обновляет текущий статус аутентифицирующего пользователя, также известный как твит.
Route:: get ( ' /tweet ' , function ()
{
return Twitter:: postTweet ([ ' status ' => ' Laravel is beautiful ' , ' response_format ' => ' json ' ]);
});Обновляет текущий статус аутентифицирующего пользователя с помощью носителя.
Route:: get ( ' /tweetMedia ' , function ()
{
$ uploaded_media = Twitter:: uploadMedia ([ ' media ' => File:: get ( public_path ( ' filename.jpg ' ))]);
return Twitter:: postTweet ([ ' status ' => ' Laravel is beautiful ' , ' media_ids ' => $ uploaded_media -> media_id_string ]);
});Получите учетные данные пользователя по электронной почте.
$credentials = Twitter::getCredentials([
'include_email' => 'true',
]);
В приведенном выше примере вам нужно передать true как строку, а не как логическое значение. Логическое значение будет преобразовано в
1, которое Twitter игнорирует.
Это также предполагает, что у вас правильно настроены разрешения в Twitter. При настройке приложения Twitter вам необходимо выбрать «Получить адрес электронной почты пользователя», передачи одного значения будет недостаточно.
Войти через твиттер
use Atymic Twitter Facade Twitter ;
Route:: get ( ' twitter/login ' , [ ' as ' => ' twitter.login ' , static function () {
$ token = Twitter:: getRequestToken ( route ( ' twitter.callback ' ));
if ( isset ( $ token [ ' oauth_token_secret ' ])) {
$ url = Twitter:: getAuthenticateUrl ( $ token [ ' oauth_token ' ]);
Session:: put ( ' oauth_state ' , ' start ' );
Session:: put ( ' oauth_request_token ' , $ token [ ' oauth_token ' ]);
Session:: put ( ' oauth_request_token_secret ' , $ token [ ' oauth_token_secret ' ]);
return Redirect:: to ( $ url );
}
return Redirect:: route ( ' twitter.error ' );
}]);
Route:: get ( ' twitter/callback ' , [ ' as ' => ' twitter.callback ' , static function () {
// You should set this route on your Twitter Application settings as the callback
// https://apps.twitter.com/app/YOUR-APP-ID/settings
if (Session:: has ( ' oauth_request_token ' )) {
$ twitter = Twitter:: usingCredentials ( session ( ' oauth_request_token ' ), session ( ' oauth_request_token_secret ' ));
$ token = $ twitter -> getAccessToken ( request ( ' oauth_verifier ' ));
if (! isset ( $ token [ ' oauth_token_secret ' ])) {
return Redirect:: route ( ' twitter.error ' )-> with ( ' flash_error ' , ' We could not log you in on Twitter. ' );
}
// use new tokens
$ twitter = Twitter:: usingCredentials ( $ token [ ' oauth_token ' ], $ token [ ' oauth_token_secret ' ]);
$ credentials = $ twitter -> getCredentials ();
if ( is_object ( $ credentials ) && ! isset ( $ credentials -> error )) {
// $credentials contains the Twitter user object with all the info about the user.
// Add here your own user logic, store profiles, create new users on your tables...you name it!
// Typically you'll want to store at least, user id, name and access tokens
// if you want to be able to call the API on behalf of your users.
// This is also the moment to log in your users if you're using Laravel's Auth class
// Auth::login($user) should do the trick.
Session:: put ( ' access_token ' , $ token );
return Redirect:: to ( ' / ' )-> with ( ' notice ' , ' Congrats! You ' ve successfully signed in! ' );
}
}
return Redirect:: route ( ' twitter.error ' )
-> with ( ' error ' , ' Crab! Something went wrong while signing you up! ' );
}]);
Route:: get ( ' twitter/error ' , [ ' as ' => ' twitter.error ' , function () {
// Something went wrong, add your own error handling here
}]);
Route:: get ( ' twitter/logout ' , [ ' as ' => ' twitter.logout ' , function () {
Session:: forget ( ' access_token ' );
return Redirect:: to ( ' / ' )-> with ( ' notice ' , ' You ' ve successfully logged out! ' );
}]);Вебхук
Чтобы успешно настроить веб-перехватчик, вам необходимо вернуть хеш с использованием токена CRC в ответ на URL-адрес веб-перехватчика (подробнее).
Route:: post ( ' twitter/webhook ' , [ ' as ' => ' twitter.webhook ' , function (){
if ( request ()-> has ( ' crc_token ' ))
return response ()-> json ([ ' response_token ' => Twitter:: crcHash ( request ()-> crc_token )], 200 );
// Your webhook logic goes here
}]);Получите твиты пользователей:
// ...
use Atymic Twitter Twitter as TwitterContract ;
use Illuminate Http JsonResponse ;
use Twitter ;
// ...
public function userTweets ( int $ userId ): JsonResponse
{
$ params = [
' place.fields ' => ' country,name ' ,
' tweet.fields ' => ' author_id,geo ' ,
' expansions ' => ' author_id,in_reply_to_user_id ' ,
TwitterContract:: KEY_RESPONSE_FORMAT => TwitterContract:: RESPONSE_FORMAT_JSON ,
];
return JsonResponse:: fromJsonString (Twitter:: userTweets ( $ userId , $ params ));
}Поиск твитов:
// ...
public function searchRecent ( string $ query ): JsonResponse
{
$ params = [
' place.fields ' => ' country,name ' ,
' tweet.fields ' => ' author_id,geo ' ,
' expansions ' => ' author_id,in_reply_to_user_id ' ,
TwitterContract:: KEY_RESPONSE_FORMAT => TwitterContract:: RESPONSE_FORMAT_JSON ,
];
return JsonResponse:: fromJsonString (Twitter:: searchRecent ( $ query , $ params ));
}
// ... Поскольку Twitter API v2 находится в активной разработке, вам может потребоваться вызвать конечную точку, которую мы явно не задокументировали в разделе «Функции» выше. Вот пример того, как вы можете использовать этот пакет для совершения вызовов к любым вновь добавленным конечным точкам. Здесь мы используем недавно добавленную конечную точку «недавнего подсчета».
// ...
$ querier = Atymic Twitter Facade Twitter:: forApiV2 ()
-> getQuerier ();
$ result = $ querier
-> withOAuth2Client ()
-> get ( ' tweets/counts/recent ' , [ ' query ' => ' foo ' ]);
// ... Сначала активируйте режим отладки в файле конфигурации.
Затем вы можете получить доступ к методу logs().
try
{
$ response = Twitter:: getUserTimeline ([ ' count ' => 20 , ' response_format ' => ' array ' ]);
}
catch ( Exception $ e )
{
// dd(Twitter::error());
dd (Twitter:: logs ());
}
dd ( $ response );