前回はCakePHPを使ってローカル環境でのメール機能の実装方法について紹介しました。
今回はCakePHPでTwitterのWebAPIを使用して、ツイート内容を画面に表示する処理を実装してみようと思います。
今回はCakePHPでTwitterのWebAPIを使用して、ツイート内容を画面に表示する処理を実装してみようと思います。
/**
* TwitterAPI
*
*/
public function twitter()
{
// ①エンドポイントを指定
$base_url = 'https://api.twitter.com/2/tweets/search/recent';
// ②検索条件を指定
$data = [
'query' => 'CakePHP',
'sort_order' => 'recency',
'expansions' => 'author_id',
'user.fields' => 'name,username,profile_image_url'
];
// ③ヘッダ生成
// 取得したBearer Tokenをセット
$api = Configure::read("twitter_api");
$token = $api['bearer_token'];
$option = [
'headers' => [
'Authorization' => 'Bearer ' . $token,
'Content-Type' => 'application/json'
]
];
// ④リクエストする
$http = new Client();
$response = $http->get($base_url, $data, $option);
if (!$response->isOk()) {
exit;
}
// ⑤JSON形式のレスポンス結果を取得する
$result = $response->getJson();
if (empty($result)) {
exit;
}
// ⑥ユーザ数とツイート本文の数は一致しないため、ユーザ情報を配列にまとめておく
$user_data = [];
$user_cnt = count($result['includes']['users']);
for ($i=0; $i < $user_cnt; $i++) {
$id = $result['includes']['users'][$i]['id'];
$user_data[$id] = [
'name' => $result['includes']['users'][$i]['name'],
'username' => $result['includes']['users'][$i]['username'],
'icon' => $result['includes']['users'][$i]['profile_image_url'],
];
}
$tweet_list = [];
foreach ($result['data'] as $tweet_data) {
$id = $tweet_data['author_id'];
$text = $tweet_data['text'];
$name = $user_data[$id]['name'];
$username = $user_data[$id]['username'];
$tweet
(@)
今回は見えやすくしたいため、cssにも手を加えています。
../cake_pjt/webroot/css/cake.css.tweet { margin: 2em 0; background: #dcefff; } .tweet .tweet-head { font-size: 1.2em; background: #5fb3f5; padding: 4px; text-align: left; color: #FFF; font-weight: bold; letter-spacing: 0.05em; } .tweet p { padding: 15px 20px; margin: 0; }