轻松使用PHP中的Twitter Streaming API

Twitter提供了一种API,您可以使用它执行一些有趣的操作,例如侦听包含特定字符串或用户可能执行的操作的推文(例如,喜欢推文,关注某人……)。 在本文中,您将学习一种使用该API的简单方法。

菲管

在研究如何在PHP中使用流API时,偶然发现了Phirehose。 该软件包可以验证和建立与流API的连接。 不幸的是,Phirehose本身的API有点笨拙。 这就是为什么我在Phirehose周围创建了一个包装器,使与Twitter的流API的连接设置变得轻而易举。 我制作了该软件包的框架不可知版本和一个Laravel特定版本。

入门

让我们回顾一下如何将软件包集成到Laravel应用中。 首先,您需要从Twitter检索一些凭证。 幸运的是,这很容易。 转到Twitter上的“应用程序管理”以创建应用程序。

创建应用程序后,单击“密钥和访问令牌”选项卡以检索Consumer_key,consumer_secret,access_token和access_token_secret。

现在,您已经拥有凭据,可以将其安装在Laravel应用中。

像数不胜数的其他软件包一样,可以通过composer安装laravel-twitter-streaming-api。

 作曲家需要spatie / laravel-twitter-streaming-api 

接下来,安装服务提供商。

  // config / app.php 
'提供者'=> [
...
Spatie \ LaravelTwitterStreamingApi \ TwitterStreamingApiServiceProvider :: class,
];

如果您喜欢使用外墙,您将很高兴知道包装中有一家供应商。

  // config / app.php 
'别名'=> [
...
'TwitterStreamingApi'=> Spatie \ LaravelTwitterStreamStreamingApi \ TwitterStreamingApiFacade :: class,
];

必须使用以下命令发布配置文件:

  php artisan vendor:publish --provider =“ Spatie \ LaravelTwitterStreamStreamApi \ TwitterStreamingApiServiceProvider” --tag =“ config” 

它将在config / laravel-twitter-streaming-api.php中复制具有此内容的文件

 返回[ 

/ **
*要使用Twitter的Streaming API,您需要一些凭证。
*
*如果您还没有凭据,请访问https://apps.twitter.com/
* /

'access_token'=> env('TWITTER_ACCESS_TOKEN'),

'access_token_secret'=> env('TWITTER_ACCESS_TOKEN_SECRET'),

'consumer_key'=> env('TWITTER_CONSUMER_KEY'),

'consumer_secret'=> env('TWITTER_CONSUMER_SECRET'),
];

在.env中创建TWITTER_ACCESS_TOKEN,TWITTER_ACCESS_TOKEN_SECRET,TWITTER_CONSUMER_KEY和TWITTER_CONSUMER_SECRET密钥,并将它们设置为在Twitter上检索到的值。

现在,您可以使用该软件包了。

您的第一流

让我们听所有包含字符串#laravel的推文。 我创建了一个预安装了包的Laravel应用示例。 该工匠命令包括侦听传入的推文:

  <?php 

命名空间App \ Console \ Commands;

使用Illuminate \ Console \ Command;
使用TwitterStreamingApi;

类ListenForHashTags扩展Command
{
/ **
*控制台命令的名称和签名。
*
* @var字符串
* /
protected $ signature ='twitter:监听哈希标签';

/ **
*控制台命令描述。
*
* @var字符串
* /
protected $ description ='收听在Twitter上使用的主题标签';

/ **
*执行控制台命令。
*
* @返回混合
* /
公共功能handle()
{
TwitterStreamingApi :: publicStream()
-> whenHears('#laravel',函数(数组$ tweet){
dump(“ {$ tweet ['user'] ['screen_name']}发过{$ tweet ['text']}”));
})
-> startListening();
}
}

如果您以前从未使用过它,则该转储功能与dd相同,但没有死光。 对startListening()的调用将启动侦听过程。 该函数将永远运行,因此之后的任何代码都不会执行。

让我们继续执行命令。 在输出中,您将看到由底层Phirehose软件包完成的一些日志记录。

现在在推文中使用#laravel推文。

太酷了! 请注意,此API是实时工作的,因此他们可以报告很多活动。 如果您需要做一些繁重的工作来处理该活动,则最好将该工作排在队列中,以保持您的收听过程快速。

另一个例子

在上面的示例中,我们使用了公共流。 您可以使用那个来听推特上发布的带有特定字符串的推文。 但是,还有其他种类的流。 使用用户流,您可以侦听已认证用户发生的某些事件。

这是一个示例,展示了如何聆听人们对您的推文的喜爱:

  TwitterStreamingApi :: userStream() 
-> onEvent(function(array $ event){
如果($ event ['event'] ==='favorite'){
echo“我们的推文{$ event ['target_object'] ['text']}被{$ event ['source'] ['screen_name']}所青睐”;
}
})
-> startListening();

在结束时

Twitter Streaming API非常强大。 如果您想进一步了解它们,请查看官方文档。 开始使用它们的最简单方法是使用我们的laravel特定或框架不可知的软件包。 如果您不喜欢包装器,而是想直接使用Phirehose,请在Scotch.io上阅读本教程。

无论如何,请查看我们团队之前制作的其他PHP和Laravel软件包。

使用Twitter的流式API构建有趣的应用程序,玩得开心!