noweh / twitter-api-v2-php
此库提供向Twitter发送消息和接收状态的方法。
Requires
- php: >=7.4
- ext-curl: *
- ext-json: *
- guzzlehttp/guzzle: ^7.5.0
- guzzlehttp/oauth-subscriber: ^0.6.0
Requires (Dev)
- phpstan/phpstan: ^1.9.14
- phpunit/php-code-coverage: ^9.2.24
- phpunit/phpunit: ^9.6.3
- vlucas/phpdotenv: ^v5.5.0
README
Twitter API V2 是一个PHP包,它为第2个端点提供了对Twitter REST API的便捷和快速访问。
文档
安装
首先,您需要将组件添加到您的 composer.json
composer require noweh/twitter-api-v2-php
添加组件后,使用 composer update 或 composer install 更新您的包。
Github Actions
此存储库使用 Github Actions 对每次推送/拉取请求进行操作,并使用 PHPStan/PHPUnit。
因此,每次有效的推送都会从 Twitter测试账户 发布一条新的推文。
用法
激活您的开发者账户
在开始之前,您必须遵循 本教程。
配置设置
预期设置如下
use Noweh\TwitterApi\Client; $settings['account_id'] $settings['access_token'], $settings['access_token_secret'], $settings['consumer_key'], $settings['consumer_secret'], $settings['bearer_token'], $settings['free_mode'] = false; // Optional $client = new Client($settings);
API功能
所有API调用都是在调用 performRequest() 方法时触发的。根据上下文,此方法可以是空的或包含将作为PostData发送的数据(请参阅以下每个调用的示例)。
在响应中包含Twitter提供的HTTP头
performRequest() 方法接受一个第二个参数,即 $withHeaders,它是一个布尔值。将此参数设置为 true 将会在响应中包含头部信息。
以下是一些包含在头部信息中的示例
x-rate-limit-limit:该端点的速率限制上限x-rate-limit-remaining:在 15 分钟窗口中剩余的请求数量x-rate-limit-reset:速率限制重置前的剩余时间窗口,单位为 UTC 纪元秒
示例
$response = $this->client->tweet()->create() ->performRequest([ 'text' => 'Test Tweet... ' ], withHeaders: true) ; /* Output: object(stdClass)#399 (2) { ["data"]=> object(stdClass)#398 (3) { ["edit_history_tweet_ids"]=> array(1) { [0]=> string(19) "1690304934837637121" } ["id"]=> string(19) "1690304934837637121" ["text"]=> string(39) "Test Tweet..." } ["headers"]=> ... ["x-rate-limit-limit"]=> array(1) { [0]=> string(5) "40000" } ["x-rate-limit-reset"]=> array(1) { [0]=> string(10) "1691835953" } ["x-rate-limit-remaining"]=> array(1) { [0]=> string(5) "39998" } ... } } */
免费模式
此 API 可以在免费模式下使用,允许有限的使用。在此模式下,查找我 方法是唯一可用的方法。您必须在创建客户端时将 free_mode 参数设置为 true。
示例
... $settings['free_mode'] = true; $client = new Client($settings);
推文端点
时间线端点
查找用户最近提及的内容
示例
$return = $client->timeline()->getRecentMentions($accountId)->performRequest();
查找用户最近的推文
示例
$return = $client->timeline()->getRecentTweets($accountId)->performRequest();
按用户ID的逆时间顺序时间线
示例
$return = $client->timeline()->getReverseChronological()->performRequest();
推文/点赞端点
用户点赞的推文
示例
$return = $client->tweetLikes()->addMaxResults($pageSize)->getLikedTweets($accountId)->performRequest();
点赞推文的用户
示例
$return = $client->tweetLikes()->addMaxResults($pageSize)->getUsersWhoLiked($tweetId)->performRequest();
推文/查找端点
搜索特定推文
示例
$return = $client->tweetLookup() ->showMetrics() ->onlyWithMedias() ->addFilterOnUsernamesFrom([ 'twitterdev', 'Noweh95' ], \Noweh\TwitterApi\TweetLookup::OPERATORS['OR']) ->addFilterOnKeywordOrPhrase([ 'Dune', 'DenisVilleneuve' ], \Noweh\TwitterApi\TweetLookup::OPERATORS['AND']) ->addFilterOnLocales(['fr', 'en']) ->showUserDetails() ->performRequest() ; $client->tweetLookup() ->addMaxResults($pageSize) ->addFilterOnKeywordOrPhrase($keywordFilter) ->addFilterOnLocales($localeFilter) ->showUserDetails() ->showMetrics() ->performRequest() ;
查找推文的所有回复
->addFilterOnConversationId($tweetId);
推文端点
通过ID获取推文
示例
$return = $client->tweet()->->fetch(1622477565565739010)->performRequest();
创建新的推文
示例
$return = $client->tweet()->create()->performRequest(['text' => 'Test Tweet... ']);
将图片上传到Twitter(并在推文中使用)
示例
$file_data = base64_encode(file_get_contents($file)); $media_info = $client->uploadMedia()->upload($file_data); $return = $client->tweet()->create() ->performRequest([ 'text' => 'Test Tweet... ', "media" => [ "media_ids" => [ (string)$media_info["media_id"] ] ] ]) ;
推文/引用端点
返回指定请求推文ID的引用推文
示例
$return = $client->tweetQuotes()->getQuoteTweets($tweetId)->performRequest();
转推端点
转推推文
示例
$return = $client->retweet()->performRequest(['tweet_id' => $tweet_id]);
推文/回复端点
隐藏对推文的回复
示例
$return = $client->->tweetReplies()->hideReply($tweetId)->performRequest(['hidden' => true]);
取消隐藏对推文的回复
示例
$return = $client->->tweetReplies()->hideReply($tweetId)->performRequest(['hidden' => false]);
推文/书签端点
查找用户的书签
示例
$return = $client->tweetBookmarks()->lookup()->performRequest();
用户端点
用户/屏蔽端点
检索您已屏蔽的用户
示例
$return = $client->userBlocks()->lookup()->performRequest();
用户/关注端点
检索正在关注您的用户
示例
$return = $client->userFollows()->getFollowers()->performRequest();
检索您正在关注的用户
示例
$return = $client->userFollows()->getFollowing()->performRequest();
关注用户
示例
$return = $client->userFollows()->follow()->performRequest(['target_user_id' => $userId]);
取消关注用户
示例
$return = $client->userFollows()->unfollow($userId)->performRequest(['target_user_id' => self::$userId]);
用户/查找端点
查找我
示例
$return = $client->userMeLookup()->performRequest();
查找Twitter用户
findByIdOrUsername() 期望一个数组或一个字符串。
您可以将搜索模式指定为第二个参数(Client::MODES['USERNAME'] 或 Client::MODES['ID'])
示例
$return = $client->userLookup() ->findByIdOrUsername('twitterdev', \Noweh\TwitterApi\UserLookup::MODES['USERNAME']) ->performRequest() ;
用户/静音端点
检索您已静音的用户
示例
$return = $client->userMutes()->lookup()->performRequest();
通过用户名或ID静音用户
示例
$return = $client->userMutes()->mute()->performRequest(['target_user_id' => $userId]);
通过用户名或ID取消静音用户
示例
$return = $client->userMutes()->unmute()->performRequest(['target_user_id' => $userId]);
贡献
分支/下载代码并运行
composer install
将 test/config/.env.example 复制到 test/config/.env 并添加您的测试凭据。
要运行测试
./vendor/bin/phpunit
运行代码分析器
./vendor/bin/phpstan analyse .