PHP で Twitter API OAuth 認証 「タイムライン取得」「つぶやき投稿」
Twitter API
目次 [閉じる]
ブラウザからログインや画像投稿のアプリケーションはこちら
Twitterアプリケーション登録
Twitter API を利用するためには、Twitterアプリケーション登録が必要です。まだ登録していない方は、次の記事のTwitter OAuth 簡単接続 REST API を PHP で活用! 「Twitterアプリケーション登録」をご覧下さい。また、以下でご紹介するサンプルコードでは、Twitterアプリケーションの Consumer key、Consumer secret、Access Token、Access Token Secret などが必要になるので、併せて確認しテキストに保存などしておいて下さい。
OAuth接続するためのTwitterライブラリのダウンロード
(1) OAuth接続するためのTwitterライブラリのダウンロード
OAuth接続するためのTwitterライブラリを Twitter libraries で紹介されている、themattharris氏の tmhOAuth を使用します。使用するファイルは tmhOAuth.php の1つのみです。ファイルはGithub:https://github.com/themattharris/tmhOAuth からダウンロードできます。
最新ダウンロードファイル:tmhOAuth
サンプルで使用しているバージョンのファイル:tmhOAuth-master.zip 152 KB
Twitter OAuth認証とはTwitterの認証方式です。Twitterは元々Basic認証でしたが、セキュリティー面の向上を図るためにOAuth認証へ変更されました。Twitter API V1.1 からは、すべての情報取得にOAuth認証が必要になります。OAuthの仕様は記載されています。
Twitter application(My applications) へOAuth認証接続することで、Twitter API サービスを利用することが出来ます。Twitter API では、タイムラインの取得、リストの取得、つぶやきの検索、ツイートやリツイートなどの機能が用意されており、これらの機能をウェブアプリケーションやスマートフォンアプリケーションに実装することが出来ます。
詳しくは Docs を参照下さい。
Twitter application(My applications) へOAuth認証接続することで、Twitter API サービスを利用することが出来ます。Twitter API では、タイムラインの取得、リストの取得、つぶやきの検索、ツイートやリツイートなどの機能が用意されており、これらの機能をウェブアプリケーションやスマートフォンアプリケーションに実装することが出来ます。
詳しくは Docs を参照下さい。
(2) 動作環境
- PHP Version 5.3以上であること(phpinfo();関数で確認)
- cURL support enabledであること(phpinfo();関数で確認)
- hash_hmac()関数が利用できること(PHP5.1.2で導入)
タイムラインを取得するプログラムの作成
(1) ファイルの設置
先程ダウンロードしたファイル tmhOAuth.php をサーバーにアップロードします。本サイトのサンプルでは https://wepicks.net/code-example/twitter-restapi/tmhOAuth/tmhOAuth.php にアップロードしています。また、hometimeline.php というファイルを作成して同じ階層にアップロードします。サンプルでは、ドキュメントルート直下に /code-example/twitter-restapi/tmhOAuth/ というディレクトリ構造を構成していますが、設置するディレクトリは任意です。
本サイトの例:
https://wepicks.net/code-example/twitter-restapi/tmhOAuth/tmhOAuth.php
https://wepicks.net/code-example/twitter-restapi/tmhOAuth/hometimeline.php
https://wepicks.net/code-example/twitter-restapi/tmhOAuth/hometimeline.php
(2) hometimeline.phpの記述内容
「hometimeline.php」には以下のコードを記述して下さい。「*******」部分の「key」や「token」にはTwitterアプリケーション登録時に取得した Keys and Access Tokens を入力して下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <title>Twitter REST API OAuth接続 ホームタイムライン取得[ GET statuses/home_timeline.json ] | WEPICKS!</title> </head> <body> <h1>Twitter REST API OAuth接続 ホームタイムライン取得[ GET statuses/home_timeline.json ]</h1> <?php //tmhOAuth.phpをインクルードします。ファイルへのパスはご自分で決めて下さい。 require_once("./tmhOAuth.php"); //Access Tokenの設定 apps.twitter.com でご確認下さい。 //Consumer keyの値を格納 $sConsumerKey = "***********************"; //Consumer secretの値を格納 $sConsumerSecret = "**********************************************"; //Access Tokenの値を格納 $sAccessToken = "**********************************************"; //Access Token Secretの値を格納 $sAccessTokenSecret = "**********************************************"; //OAuthオブジェクトを生成する $twObj = new tmhOauth( array( "consumer_key" => $sConsumerKey, "consumer_secret" => $sConsumerSecret, "token" => $sAccessToken, "secret" => $sAccessTokenSecret, "curl_ssl_verifypeer" => false, ) ); //Twitter REST API 呼び出し $code = $twObj->request( 'GET', "https://api.twitter.com/1.1/statuses/home_timeline.json",array("count"=>"10")); // statuses/home_timeline.json の結果をjson文字列で受け取り配列に格納 $aResData = json_decode($twObj->response["response"], true); //配列を展開 if(isset($aResData['errors']) && $aResData['errors'] != ''){ ?> 取得に失敗しました。<br> エラー内容:<br> <pre> <?php var_dump($aResData); ?> </pre> <?php }else{ //配列を展開 $iCount = sizeof($aResData); for($iTweet = 0; $iTweet<$iCount; $iTweet++){ $iTweetId = $aResData[$iTweet]['id']; $sIdStr = (string)$aResData[$iTweet]['id_str']; $sText= $aResData[$iTweet]['text']; $sName= $aResData[$iTweet]['user']['name']; $sScreenName= $aResData[$iTweet]['user']['screen_name']; $sProfileImageUrl = $aResData[$iTweet]['user']['profile_image_url']; $sCreatedAt = $aResData[$iTweet]['created_at']; $sStrtotime= strtotime($sCreatedAt); $sCreatedAt = date('Y-m-d H:i:s', $sStrtotime); ?> <hr/> <h3><?php echo $sName; ?>さんのつぶやき</h3> <ul> <li>IDNO[id] : <?php echo $iTweetId; ?></li> <li>名前[name] : <?php echo $sIdStr; ?></li> <li>スクリーンネーム[screen_name] : <?php echo $sScreenName; ?></li> <li>プロフィール画像[profile_image_url] : <img src="<?php echo $sProfileImageUrl; ?>" /></li> <li>つぶやき[text] : <?php echo $sText; ?></li> <li>ツイートタイム[created_at] : <?php echo $sCreatedAt; ?></li> </ul> <?php }//end for } ?> </body> </html> |
Twitterアカウントのホームタイムラインが取得できます。
ツイート投稿のサンプルコード
動作環境は hometimeline.php と同じです。「tweetpost.php」というファイルを作成して、「tmhOAuth.php」ファイルと同じ階層にアップロードしてください。
本サイトの例:
本サイトの例:
https://wepicks.net/code-example/twitter-restapi/tmhOAuth/tmhOAuth.php
https://wepicks.net/code-example/twitter-restapi/tmhOAuth/tweetpost.php
https://wepicks.net/code-example/twitter-restapi/tmhOAuth/tweetpost.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <title>Twitter REST API OAuth接続 ツイート投稿[ POST statuses/update.json ] | WEPICKS!</title> </head> <body> <h1>Twitter REST API OAuth接続 ツイート投稿[ POST statuses/update.json ]</h1> <!-- 説明ページurl --> <h2><a href="/twitter-restapi-tmhoauth/">→説明はこちら</a></h2> <?php ######################################### ### ツイートの投稿 if(!empty($_POST['tweet'])){ //tmhOAuth.phpをインクルードします。 require_once("./tmhOAuth.php"); //Access Tokenの設定 apps.twitter.com でご確認下さい。 //Consumer keyの値を格納 $sConsumerKey = "***********************"; //Consumer secretの値を格納 $sConsumerSecret = "**********************************************"; //Access Tokenの値を格納 $sAccessToken = "**********************************************"; //Access Token Secretの値を格納 $sAccessTokenSecret = "**********************************************"; //OAuthオブジェクトを生成する $twObj = new tmhOauth( array( "consumer_key" => $sConsumerKey, "consumer_secret" => $sConsumerSecret, "token" => $sAccessToken, "secret" => $sAccessTokenSecret, "curl_ssl_verifypeer" => false, ) ); //ツイート内容 $sTweet = $_POST['tweet']; //Twitter REST API 呼び出し $code = $twObj->request( 'POST', "https://api.twitter.com/1.1/statuses/update.json",array("status" => $sTweet)); // statuses/update.json の結果をjson文字列で受け取り配列に格納 $aResData = json_decode($twObj->response["response"], true); //配列を展開 if(isset($aResData['errors']) && $aResData['errors'] != ''){ ?> ツイート投稿に失敗しました。<br> エラー内容:<br> <pre> <?php var_dump($aResData); ?> </pre> <?php }else{ //配列を展開 $iTweetId = $aResData['id']; $sIdStr = (string)$aResData['id_str']; $sText= $aResData['text']; $sName= $aResData['user']['name']; $sScreenName= $aResData['user']['screen_name']; $sProfileImageUrl = $aResData['user']['profile_image_url']; $sCreatedAt = $aResData['created_at']; $sStrtotime= strtotime($sCreatedAt); $sCreatedAt = date('Y-m-d H:i:s', $sStrtotime); ?> <h3><?php echo $sName; ?> へツイート投稿</h3> <a href="https://twitter.com/<?php echo $sScreenName; ?>" target="_blank" rel="nofollow"><?php echo $sScreenName; ?></a> <ul> <li>IDNO[id] : <?php echo $iTweetId; ?></li> <li>名前[name] : <?php echo $sIdStr; ?></li> <li>スクリーンネーム[screen_name] : <?php echo $sScreenName; ?></li> <li>プロフィール画像[profile_image_url] : <img src="<?php echo $sProfileImageUrl; ?>" /></li> <li>つぶやき[text] : <?php echo $sText; ?></li> <li>ツイートタイム[created_at] : <?php echo $sCreatedAt; ?></li> </ul> <?php } } ?> <?php ######################################### ### 投稿フォーム ?> <h1>投稿フォーム</h1> <form action="tweetpost.php" method="POST"> ツイート:<br> <textarea name="tweet" readonly="readonly"><?php echo "呟きのTEST投稿です。 (".date('Y-m-d H:i:s').")";?></textarea><br> <input type="submit" value="送信" /> </form> </body> </html> |
投稿できない場合のチェック事項。登録したTwitterアプリケーションの「Permissions」の「Access」を「Read, Write and Access direct messages」にする必要があります。この設定にしないとAPIによる書き込みが出来ません。
タグ(=記事関連ワード)
タグ: twitter api
日付
投稿日:2017年5月16日
最終更新日:2023年09月05日
最終更新日:2023年09月05日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/twitterapiv11_webapp/trackback/