タイトル通りLaravelを使用してツイートを取得する方法を紹介します。
今回利用するAPIは「GET search/tweets」です。
「abraham/twitteroauth」ライブラリを導入する
twitter apiを呼び出すために「abraham/twitteroauth」ライブラリを導入します。
サーバーにcomposerを導入の上、以下のコマンドを実行してください。
composer require abraham/twitteroauth
.envファイルの更新
.envファイルに以下の内容をコピペし、Api KeyやApi Secret Keyなどを自身の値に置き換えてください。
TWITTER_CLIENT_ID = TwitterのApi Key TWITTER_CLIENT_SECRET = TwitterのApi Secret Key TWITTER_CLIENT_ID_ACCESS_TOKEN = TwitterのAccess Token TWITTER_CLIENT_ID_ACCESS_TOKEN_SECRET = TwitterのAccess token secret
ツイートを検索する
まずは「search/tweets」を呼び出すメソッドを作りましょう。
app/Http直下にVenderフォルダを作成してください。
続いてVenderフォルダ直下にCallTwitterApi.phpファイルを作成してください。
CallTwitterApi.phpファイルを作成したら、以下のコードをコピペしてください。
<?php
namespace App\Http\Vender;
use Illuminate\Http\Request;
use Abraham\TwitterOAuth\TwitterOAuth;
class callTwitterApi
{
private $t;
public function __construct()
{
$this->t = new TwitterOAuth(
env('TWITTER_CLIENT_KEY'),
env('TWITTER_CLIENT_SECRET'),
env('TWITTER_CLIENT_ID_ACCESS_TOKEN'),
env('TWITTER_CLIENT_ID_ACCESS_TOKEN_SECRET'));
}
// ツイート検索
public function serachTweets(String $searchWord)
{
$d = $this->t->get("search/tweets", [
'q' => $searchWord,
'count' => 3,
]);
return $d->statuses;
}
}
次にコントローラからserachTweetsメソッドを呼び出します。
以下のコマンドをターミナル上で実行してください。
php artisan make:controller TwitterController
TwitterController.phpに以下のコードをコピペしてください。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Vender\CallTwitterApi;
class TwitterController extends Controller
{
// 投稿
public function index(Request $request)
{
$t = new CallTwitterApi();
$d = $t->serachTweets("検索ワード");
return view('twitter', ['twitter' => $d]);
}
}
次に検索結果を画面上に表示します。
resources/views直下にtwitter.blade.phpファイルを作成してください。
そして以下のコードをコピペしてください。
@foreach ($twitter as $twitter)
{{ $twitter->text }}<br>
@endforeach
最後にroute/web.phpファイルに以下を追記してください。
Route::get('twitter', 'TwitterController@index');
コーディング作業は以上となります。
ブラウザから「https://~~~~/twiiter」にアクセスしてもらうとツイートの本文の一覧が表示されるはずです。
埋め込み用コードを取得したい場合
埋め込みコードを取得して、ブラウザに以下のように表示したい場合がありますよね。
そのやり方を紹介します。

利用するAPIは「GET statuses/oembed」です。
TwitterController.phpを以下のように改修してください。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Vender\CallTwitterApi;
class TwitterController extends Controller
{
// 投稿
public function index(Request $request)
{
$t = new CallTwitterApi();
$d = $t->serachTweets("検索したいワード");
$array = array();
foreach($d as $d) {
$array[] = array($t->statusesOembed($d->id));
}
return view('twitter', ['twitter' => $array]);
}
}
CallTwitterApi.phpを以下のように改修してください。
<?php
namespace App\Http\Vender;
use Illuminate\Http\Request;
use Abraham\TwitterOAuth\TwitterOAuth;
class callTwitterApi
{
private $t;
public function __construct()
{
$this->t = new TwitterOAuth(env('TWITTER_CLIENT_KEY'),
env('TWITTER_CLIENT_SECRET'),
env('TWITTER_CLIENT_ID_ACCESS_TOKEN'),
env('TWITTER_CLIENT_ID_ACCESS_TOKEN_SECRET'));
}
// 投稿検索
public function serachTweets(String $searchWord)
{
$d = $this->t->get("search/tweets", [
'q' => $searchWord,
'count' => 3,
]);
return $d->statuses;
}
//oEmbed互換形式で取得
public function statusesOembed(String $id)
{
$d = $this->t->get("statuses/oembed", [
'id' => $id,
]);
return $d->html;
}
}
twitter.blade.phpを以下のように改修してください。
@foreach ($twitter as $twitter)
{!! $twitter[0] !!}<br>
@endforeach
以上となります。