EC-CUBE4で新着情報を公開したときにツイッターに投稿する方法です。
今回はツイッター認証用ライブラリのTwitterOAuthを使って投稿するようにします。
まずはライブラリのインストールしてください。
composer require abraham/twitteroauth
ニュースを公開したらTweetするイベントリスナーを作成
次にCustomize/EventListener/TweetListener.phpを作成してください。
<?php
namespace Customize\EventListener;
use Eccube\Common\EccubeConfig;
use Eccube\Event\EccubeEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class TweetListener implements EventSubscriberInterface
{
/**
* @var EccubeConfig
*/
private $eccubeConfig;
public function __construct(EccubeConfig $eccubeConfig)
{
$this->eccubeConfig = $eccubeConfig;
}
public static function getSubscribedEvents()
{
return [
EccubeEvents::ADMIN_CONTENT_NEWS_EDIT_COMPLETE => 'onAdminContentNewsEditComplete',
];
}
public function onAdminContentNewsEditComplete(EventArgs $event)
{
$News = $event->getArgument("News");
if($News->getVisible()) {
$connection = new TwitterOAuth(
$this->eccubeConfig->get('twitter.consumer_key'),
$this->eccubeConfig->get('twitter.consumer_secret'),
$this->eccubeConfig->get('twitter.access_token'),
$this->eccubeConfig->get('twitter.access_token_secret')
);
$connection->post("statuses/update", ["status" => $News->getTitle()." ".$News->getUrl()]);
}
}
}
services.yamlにTwitter用のパラメーターを追加
app/Customize/Resource/config/services.yamlを作成してCONSUMER_KEYとCONSUMER_SECRET、ACCESS_TOKEN、ACCESS_TOKEN_SECRET用のパラメーターを追加してください。
parameters:
twitter.consumer_key: '%env(TWITTER_CONSUMER_KEY)%'
twitter.consumer_secret: '%env(TWITTER_CONSUMER_SECRET)%'
twitter.access_token: '%env(TWITTER_ACCESS_TOKEN)%'
twitter.access_token_secret: '%env(TWITTER_ACCESS_TOKEN_SECRET)%'
.envにCONSUMER_KEYとCONSUMER_SECRET、ACCESS_TOKEN、ACCESS_TOKEN_SECRETを追加
.envにCONSUMER_KEYとCONSUMER_SECRET、ACCESS_TOKEN、ACCESS_TOKEN_SECRETを追加してください。
TWITTER_CONSUMER_KEY=abcdefghijklmn
TWITTER_CONSUMER_SECRET=abcdefghijklmn
TWITTER_ACCESS_TOKEN=abcdefghijklmn
TWITTER_ACCESS_TOKEN_SECRET=abcdefghijklmn
以上で完成です。
素敵なプラグインを紹介して頂きありがとうございます。
少しいじって改行してDescriptionも表示するようにしました。
セキュリティに考慮するため記事の内容を更新しましたのでご確認ください。