Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
26
Help us understand the problem. What are the problem?

posted at

updated at

[PHP]Twitter APIを試して少しまとめた

今回の題

Twitter APIの審査がようやく通ったので記事にします。いつか誰かの参考になれば幸いです。

余談ですが、グーグル翻訳の精度が上がっていて申請の際にめちゃくちゃ助かりました。
アカウントの申請に関しては本記事では省きますが、以下のリンクから行えます。

申請はこちらから

ライブラリの準備

・abraham/twitteroauthのインストール
abraham/twitteroauthはstar数4000近い人気のライブラリです。
少ないコード、シンプルな記述で簡単にTwitter APIを操作できます。

$ composer require abraham/twitteroauth

利用準備

申請後の開発者用のページのComusumer KeyAccess Tokenが乗っているのでコピーしておいてください。
コードはREADMEに記載されていたこちらのページに従って書いていきます。
適宜、目を通しておくと吉です。

インスタンスの作成

<?php
require('vendor/autoload.php');

use Abraham\TwitterOAuth\TwitterOAuth;

$consumer_key = 'XXXXXXXXX';
$consumer_key_sercret = 'XXXXXXXXX';
$access_token = 'XXXXXXXXX';
$access_token_secret = 'XXXXXXXXX';

$connection = new TwitterOAuth($consumer_key, $consumer_key_sercret, $access_token, $access_token_secret);

composerのオートロードでvendor配下のライブラリをロードし、useを使ってエイリアスを作成。TwitterOAuthオブジェクトのインスタンスを変数$connectionに作成します。
インスタンス作成時の引数は各自の開発者ページに記載のものを利用してください。

コード

abraham/twitteroauthのメソッドには基本的に、
第一引数にエンドポイントのパス
第二引数にパラメーター
を渡します。
エンドポイントとパラメーターは以下で確認できます。
Twitter Developer
日本語でまとめてくれているサイトがありました。
Twitter REST APIの使い方

いくつか試してみます。


1.ツイートを検索する

ツイートの検索をするためのエンドポイントは
https://api.twitter.com/1.1/search/tweets.json
であることを、Twitter Developer /Search Tweetsで確認しておきます。
第一引数として使用するのは、search/tweetsの部分です。

$tweets = $connection->get('search/tweets', ['q' => '駆け出しエンジニア']);

パラメーターは連想配列で渡します。
これで、駆け出しエンジニアというワードが含まれたツイートを取得できました。


2.ツイートする

$connection->post('statuses/update', ['status' => 'テスト'];

メソッドをpostにするとpostリクエストが出来ます。
アカウントの設定をRead and Writeに設定しておく必要があります。


3.いいねする

いいねをする為には、対象のツイートのidが必要になります。
なので、「1.ツイートを検索する」で書いたような手段でツイートを検索し、そのレスポンスの中に含まれてるツイートのidを取得し指定してください。

$connection->post('favorites/create', ['id' => '1292797790070779905'];


4.トレンドを検索する

まず、エンドポイントtrends/availableで日本のidを取得します。

$connection->get('trends/available');

日本のidは2345896でした。
それを今度は、trends/placeのパラメータとして渡します。

$connection->get('trends/place', ['id' => '2345896']);

これで今現在の日本のTwitter上でのトレンドが取得できます。


5.APIの制限数を確認する

$connection->get('application/rate_limit_status');

APIのリクエストには一定時間内での回数制限があります。
それを取得するためのリクエストです。リクエストの残数などを確認することができます。
パラメーターを指定すればエンドポイントごとに確認することも可能です。

制限回数は以下で確認することができます。
Twitter Developer Rate limits

以上!!

最後に

ここまで読んでいただきありがとうございます。
いつか誰かの参考になれば幸いです。
他にもAPI関連の記事を書いていますので、よければ🙇‍♀️
[PHP] Zoom APIを利用してミーティングを作成する
[PHP] YouTube APIの利用(動画情報の取得)
[PHP] Messaging APIを使ったLINEbotで色々試してみる

参考

Twitter Developer
TwitterOAuth

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
26
Help us understand the problem. What are the problem?