Laravelでtwitter apiを呼び出し、ツイートを取得する方法

スポンサーリンク

タイトル通り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

以上となります。

Laravel
スポンサーリンク
エンジニアの日記

コメント