noweh/twitter-api-v2-php

此库提供向Twitter发送消息和接收状态的方法。

3.5.0 2024-04-29 14:39 UTC

README

PHP Badge Twitter Run Tests MIT Licensed last version Downloads twitter

Twitter API V2 是一个PHP包,它为第2个端点提供了对Twitter REST API的便捷和快速访问。

文档

安装

首先,您需要将组件添加到您的 composer.json

composer require noweh/twitter-api-v2-php

添加组件后,使用 composer updatecomposer install 更新您的包。

Github Actions

此存储库使用 Github Actions 对每次推送/拉取请求进行操作,并使用 PHPStan/PHPUnit

因此,每次有效的推送都会从 Twitter测试账户 发布一条新的推文。

用法

激活您的开发者账户

在开始之前,您必须遵循 本教程

  • 请求开发者账户批准;
  • 一旦您的开发者账户获得批准,您将需要 创建一个项目;
  • 为您的Twitter应用启用读写访问权限;
  • 生成消费者密钥和身份验证令牌;
  • 从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 .