Webアプリ習作#9

ツイート機能の仮実装について

Laravelの枠組みで動かす前にまずは簡易的な仮実装で動作を確認する

abraham/twitteroauthのインストール

TwitterAPIを操作できるライブラリ
プロジェクトディレクトリにて以下を実行

composer require abraham/twitteroauth

終わったらcomposer.jsonを開き、requireセクションにabraham/twitteroauthが追加されていることを確認

アクセストークンをメモ

ツイートを実行するTwitterOAuthにはアクセストークンが必要
本来ならLaravel Socialiteから取得できるユーザー情報を参照するところだが、仮実装なので直打ちする
app\Http\Controllers\TwitterAuthController.phpを修正

    public function callback()
    {
        $providerUser = Socialite::driver('Twitter')->user();
        dd($providerUser); // これを一時的に追加.(後で削除)

http://localhost:8000/auth/twitterにアクセスしてログイン情報を確認してtokenとtokenSecretの値をメモしておく
終わったらTwitterAuthController.phpの修正を戻す

ツイートする仮画面を作成

resources/views/test.blade.phpを作成
TwitterOAuthのコンストラクタの引数には先ほどメモしたtoken,tokenSecretの文字列を記載する
※token,tokenSecretの文字列は取り扱いに注意(公開厳禁)

<?php
use Abraham\TwitterOAuth\TwitterOAuth;
function testTweet(){
    $twitter = new TwitterOAuth( env('TWITTER_CLIENT_ID'),
        env('TWITTER_CLIENT_SECRET'),
        "メモしたtokenの文字列",
        "メモしたtokenSecretの文字列" );

    $twitter->post("statuses/update", [
       "status" =>
            'テストツイートです'
        ]);
}

if (isset($_GET['testtweet'])) {
    testTweet();
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <title>
    test
  </title>
</head>
<body>
<a href='index.php?testtweet=true'>テストツイートをする</a>
</body>
</html>
ルーティングの編集

routes/web.phpを以下のように修正

Route::get('/', function () {
    //return view('welcome'); // これを削除.
    return view('test'); // これを追加.
});
確認

http://localhost:8000 にアクセスして"テストツイートをする"というリンクをクリック
ログインしたTwitterアカウントを確認してテストツイートが追加されていることを確認