はじめに
Laravelでアニメの聖地の写真を共有するサイトを作った際に、写真が投稿されるたびにサイトのアカウントで投稿する機能を実装したので方法を書いていきたいと思います。
作ったサイトはこちらです。
実際に投稿するとこのようにTwitterに呟かれます。
New Photo Post!
— Holy Place Photo (@holyplace_photo) 2018年11月7日
新しい聖地の写真が投稿されました!
タイトル「唯ちゃん激似の飛び出し坊や」#photo #anime #photography #アニメ #聖地 #写真 #HolyPlacePhotohttps://t.co/63igSPKhnR
前提
- Laravel version 5.6
- Twitter Developerの登録済み
abraham/twitteroauthの設定
Twitterの投稿はabraham/twitteroauthを利用します。
まずはインストール。
composer require abraham/twitteroauth
.envにトークンなどを設定します。
.env
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
Laravel
投稿はとても簡単です。
TwitterController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Abraham\TwitterOAuth\TwitterOAuth;
class TwitterController extends Controller
{
// 投稿
public function tweet(Request $request)
{
$twitter = new TwitterOAuth(env('TWITTER_CLIENT_ID'),
env('TWITTER_CLIENT_SECRET'),
env('TWITTER_CLIENT_ID_ACCESS_TOKEN'),
env('TWITTER_CLIENT_ID_ACCESS_TOKEN_SECRET'));
$twitter->post("statuses/update", [
"status" =>
'New Photo Post!' . PHP_EOL .
'新しい聖地の写真が投稿されました!' . PHP_EOL .
'タイトル「' . $title . '」' . PHP_EOL .
'#photo #anime #photography #アニメ #聖地 #写真 #HolyPlacePhoto' . PHP_EOL .
'https://www.holy-place-photo.com/photos/' . $id
]);
}
}
改行やハッシュタグもこのように投稿することができます。
終わりに
前回のTwitterログインもそうでしたが、Twitter Developerの登録のほうが難しいくらい投稿も簡単でした。
abraham/twitteroauth
は投稿だけでなく取得なども可能だそうです!