laminas/laminas-twitter

此软件包已被放弃且不再维护。未建议替代软件包。

Twitter网络服务的面向对象包装器

3.7.0 2022-12-05 22:39 UTC

README

废弃

此软件包已被废弃且将不再开发!

请参阅技术指导委员会 会议纪要

🇷🇺 俄罗斯公民

我们是来自不同国家的Laminas参与者。我们中许多人都有在俄罗斯和乌克兰的朋友、亲戚和同事。我们中的一些人在俄罗斯出生。我们中的一些人现在住在俄罗斯。我们中的一些人的祖父母在二战中与法西斯作战。这里没有人支持法西斯主义。

我们中有一个乌克兰亲戚和她儿子一起从家中逃出。火车因前方道路上的轰炸而延误。我们有朋友躲在防空洞里。我们在空袭后焦虑地等待他们的消息,空袭无差别地袭击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知这些消息。这是我们亲身体验到的。

您足够信任我们使用我们的程序,我们请求您再次信任我们。我们需要您的帮助。走出去抗议这场毫无意义的战争。停止血腥。说“停止战争!”

🇺🇸 致俄罗斯公民

来自世界各地的Laminas成员。我们中许多人都有在俄罗斯和乌克兰的朋友、家人和同事。我们中的一些人在俄罗斯出生。我们中的一些人现在住在俄罗斯。我们中的一些人的祖父母在二战中与纳粹作战。这里没有人支持法西斯主义。

我们有一个团队成员有一个乌克兰亲戚和她儿子一起逃离了她的家。火车因前方道路上的轰炸而延误。我们有朋友躲在防空洞里。我们在空袭后焦急地等待他们的消息,空袭无差别地袭击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知这些消息。这是我们亲身体验到的。

您足够信任我们使用我们的软件。我们请求您相信我们在这一点上的真实陈述。我们需要您的帮助。走出去抗议这场无意义的战争。停止杀戮。说“停止战争!”

Twitter API提供面向对象的PHP包装器。

安装

运行以下命令以安装此库

$ composer require laminas/laminas-twitter

使用

通过提供您的Twitter消费者密钥和密钥、访问令牌和密钥来实例化Twitter

use Laminas\Twitter\Twitter;

$twitter = new Twitter([
    'access_token' => [
        'token' => '<token value>',
        'secret' => '<token secret value>',
    ],
    'oauth_options' => [
        'consumerKey' => '<consumer key value>',
        'consumerSecret' => '<consumer secret value>',
    ],
]);

完成这些后,您可以通过以下三种方式之一开始调用API。

  • 通过直接在Twitter类上调用方法。以下列出了完整的列表。
  • 使用“代理”功能。在这些情况下,您需要提供API的第一个路径元素,然后调用它上的方法:$twitter->statuses->update($message)
  • 使用get()post()方法。

可用方法

  • accountVerifyCredentials() : Response
  • applicationRateLimitStatus() : Response
  • blocksCreate($id) : Response
  • blocksDestroy($id) : Response
  • blocksIds(int $cursor = -1) : Response
  • blocksList(int $cursor = -1) : Response
  • directMessagesDestroy($id) : Response
  • directMessagesMessages(array $options = []) : Response
  • directMessagesNew($user, string $text, array $extraParams = []) : Response
  • directMessagesEventsNew($user, string $text, array $extraParams = []) : Response
  • directMessagesSent(array $options = []) : Response
  • favoritesCreate($id) : Response
  • favoritesDestroy($id) : Response
  • favoritesList(array $options = []) : Response
  • followersIds($id, array $params = []) : Response
  • friendsIds($id, array $params = []) : Response
  • friendshipsCreate($id, array $params = []) : Response
  • friendshipsLookup($id, array $params = []) : Response
  • friendshipsDestroy($id) : Response
  • listsMembers($listIdOrSlug, array $params = []) : Response
  • listsMemberships($id, array $params = []) : Response
  • listsSubscribers($id, array $params = []) : Response
  • searchTweets(string $query, array $options = []) : Response
  • statusesDestroy($id) : Response
  • statusesHomeTimeline(array $options = []) : Response
  • statusesMentionsTimeline(array $options = []) : Response
  • statusesSample() : Response
  • statusesShow($id, array $options = []) : Response
  • statusesUpdate(string $status, $inReplyToStatusId = null, $extraAttributes = []) : Response
  • statusesUserTimeline(array $options = []) : Response
  • usersLookup($id, array $params = []) : Response
  • usersSearch(string $query, array $options = []) : Response
  • usersShow($id) : Response

代理属性

以下代理属性是允许的

  • account
  • application
  • blocks
  • directmessages
  • favorites
  • followers
  • friends
  • friendships
  • lists
  • search
  • statuses
  • users

在每个例子中,您可以通过将代理名称与上述方法列表进行比较来识别代理的可用方法。例如,users代理允许以下

$twitter->users->lookup($id, array $params = []);
$twitter->users->search(string $query, array $options = []);
$twitter->users->show($id);

直接访问

Twitter API有数十个端点,其中一些比其他更受欢迎或有用。因此,我们只提供了一部分可用的功能。

但是,我们可以让您通过get()post()方法访问任何端点,它们有以下签名

public function get(string $path, array $query = []) : Response;
public function post(string $path, $data = null) : Response;

在每种情况下,$path是API端点,如Twitter API文档中所详细说明的,但不包括任何.json后缀,而方法名称对应于请求是否通过HTTP GET或POST进行。

对于HTTP GET请求,$query参数提供您希望为该端点传递的任何查询字符串参数。例如,如果您正在请求statuses/home_timeline,您可能需要传递countsince_id

对于HTTP POST请求,$data参数可以是以下之一

  • 数据的数据关联数组。
  • 数据的数据可序列化对象。
  • 表示原始有效负载的字符串。

提供的数据将根据端点而异。

媒体上传

自3.0版本起,我们支持通过类Laminas\Twitter\MediaImageVideo进行媒体上传。在每种情况下,您需要使用要上传的图像的本地文件系统路径和媒体类型来实例化相应的类,然后调用配置正确的HTTP客户端的upload()方法。响应将包含一个media_id属性,您可以通过media_ids参数在发布状态时提供它。

$image = new Image('data/logo.png', 'image/png');
$response = $image->upload($twitter->getHttpClient());

$twitter->statusUpdate(
    'A post with an image',
    null,
    ['media_ids' => [$response->media_id]]
);

在为直接消息提供媒体时,您必须向媒体类构造函数提供额外的标志。

  • 一个表示是为直接消息的标志。
  • 一个表示上传的媒体是否可以在其他直接消息中共享/重复使用的标志。
$image = new Image(
    'data/logo.png',
    'image/png',
    $forDirectMessage = true,
    $shared = false
);
$upload = $image->upload($twitter->getHttpClient());

与非直接消息媒体上传不同,标识符将在返回的上传实例的id_str参数中;将其用作DM中的media_id

$twitter->directmessagesEventsNew(
    $user,
    $message,
    ['media_id' => $upload->id_str]
);

注意:直接消息仅支持单个附件。

速率限制

自3.0版本起,我们现在提供了对Twitter速率限制头部的检查,允许您对其做出反应。

$response = $twitter->statusUpdate('A post');
$rateLimit = $response->getRateLimit();
if ($rateLimit->remaining === 0) {
    // Time to back off!
    sleep($rateLimit->reset); // seconds left until reset
}