2021年版 Twitterのapiをlaravelで利用する!

Laravel
twitterのapiを使えばtwitterで公開している情報を取得したりツイートをしたりと、twitterのwebサイトやアプリで行っていた事をプログラムから行う事ができます。 twitterのapiについてググってみると、断片的に説明している記事が多いので、今回の記事では全体をSTEP毎に説明していきたいと思います

全体概要の説明

twitterのapiを叩く為には大まかに4ステップに別れます。 STEP1 →TwitterでdeveloperPortalでapiのキーを取得 STEP2 →自分のプロジェクトにtwitterのライブラリを取り込む STEP3 →STEP1で取得したapiのキーを設定する STEP4 →実際にAPIを叩く といった感じです。それでは一つ一つ具体的な内容を説明していきたいと思います。

STEP1 : TwitterのDeveloperPotalでAPI KEYを取得

STEP1-1

まずはTwitterにログインしている状態でDeveloperPortalにアクセスしましょう
https://developer.twitter.com/en/apps/

STEP1-2

初めは以下の様な画面になりますので、右上にあるCreate an appを押下してください。

STEP1-3

ここで利用に関するアンケートに答える必要があります。 質問:What is your primary reason for using Twitter developer tools ? (Twitter開発者ツールを使用する主な理由は何ですか?) 回答例 今回は趣味でツールを作ってみたいと思っていたので、以下を選択しました [Building tools for Twitter users ]

STEP1-4

What country do you live in ? 住んでいる国は? 回答例:Japan What would you like us to call you ? なんと呼べば良いですか? 回答例:koyama (自分の名前をいれました。) Want updates about the Twitter API? TwitterのAPIについての最新情報が必要ですか? 回答例:不要な為チェック無し

STEP1-5

質問1

In your words In English, please describe how you plan to use Twitter data and/or APIs. The more detailed the response, the easier it is to review and approve.(TwitterデータやAPIの使用方法を英語で説明してください。応答が詳細であるほど、レビューと承認が容易になります。)

回答例:I want to analyze the user’s tweets and analyze what the user likes and who they like.The analysis results will be displayed on the website.All websites are free.We plan to set up google adsense ads on our website. (ユーザーのツイートを解析して、ユーザーが好きな物・好きな人を分析します。分析結果をwebサイトで表示する予定です。webサイトは全て無料です。webサイトにはgoogle adsenseの広告を設定する予定です。) ※200文字以上で入力する必要があります

質問2

Are you planning to analyze Twitter data?(Twitterデータの分析を計画していますか?)
回答例:YES
Please describe how you will analyze Twitter data including any analysis of Tweets or Twitter users.(ツイートやTwitterユーザーの分析を含め、Twitterデータを分析する方法を説明してください。)
回答例:I will try Morphological analysis of the information tweeted by the user and the tweet that the user responded to.(ユーザーのツイートしている情報と、ユーザーが反応したツイートを形態素解析します。)

質問3

Will your app use Tweet, Retweet, like, follow, or Direct Message functionality?(アプリはツイート、リツイート、いいね、フォロー、ダイレクトメッセージ機能を使用しますか?) 回答例:NO(今回はデータ取得だけしたいのでNoにしました。)

質問4

Do you plan to display Tweets or aggregate data about Twitter content outside of Twitter?(Twitter以外のTwitterコンテンツに関するツイートや集計データを表示する予定はありますか?)
回答例:No (Twitter以外の物は使わないので)

質問5

Will your product, service or analysis make Twitter content or derived information available to a government entity?(あなたの製品、サービス、または分析により、Twitterのコンテンツまたは派生情報を政府機関が利用できるようになりますか?)
回答例:No (政府機関がターゲットではないのでNoとしました。)
確認画面が出るので次の画面へ遷移します。

STEP1-6

ポリシー承認画面が出るのでチェックボックスにチェックを入れて次へ。

STEP1-7

これで登録しているメールアドレスにメールが届きます。 メール内に記載されている「Confirm your email」をクリックすると登録完了です。  

STEP1-8

以下の様な画面が表示されるので、自分の作りたいプロジェクトの名前(任意)を入力

STEP1-9

これでアプリが作成されています。Skip to dashboardでダッシュボードに行ってみたいと思います。

STEP1-9

ダッシュボード ①ダッシュボード左側のメニューの中に自分でつくったアプリ名があります。 ②画面丈夫のKeys and tokens をクリック ③view keysをクリックすると (API keyAPI key secret )という項目が表示すされるのでメモ ④Access token & secret をクリックすると (access token access token secret)という項目が表示されるのでメモ

STEP2 :自分のプロジェクトにtwitterのライブラリを取り込む

自分のLaravelの環境にtwitterのライブラリを取り込みます。 調べてみるとTwitterOAuthというライブラリが有名らしいのでコチラを入れて確認したいと思います。https://twitteroauth.com/ ※laravelのプロジェクトを立ち上げる記事もコチラに書いてますのでよろしければどうぞ。 laravelのプロジェクトにはcomposer.json・composer.lockというファイルが含まれています。 このcomposer.jsonに以下を追加します。
{
    "require": {
        ...省略...
        "abraham/twitteroauth": "2.0.1"
    }
}
これでLaravelが動作しているサーバーへ入りプロジェクトのディレクトリに移動。
composer update abraham/twitteroauth
これで composer.lockが書き変わり、venderのディレクトリにtwitteroauthが取り込まれます。

STEP3 :STEP1で取得したapiのキーを設定する

※僕はserviceクラスに実装しましたが、どこかわかりやすい箇所に実装してください。
use Abraham\TwitterOAuth\TwitterOAuth;

// OAuth認証
$api_key = '{{developerPortalで取得したAPIKEY}}';
$api_key_secret = '{{developerPortalで取得したAPI key secret}}';
$access_token = '{{developerPortalで取得したaccess_token}}';
$access_token_secret = '{{developerPortalで取得したaccess token secret}}';

STEP4: Twitterのapiを利用する

STEP3で設定した情報を元にapiの認証を行って、apiに接続します。 statuses/user_timeline という部分がエンドポイントになります。
$connection = new TwitterOAuth($api_key, $api_key_secret, $access_token, $access_token_secret);
$tweets_params = ['screen_name' => '{{@から始まるid}}' ,'count' => '200'];
$tweets = $connection->get('statuses/user_timeline', $tweets_params);
twitter側でいろいろなapiを用意してくれているので、apiのエンドポイントやパラメータなどは以下で確認できます
Overview

コメント

タイトルとURLをコピーしました